Configurando o ASP.NET MVC2 no Apache 2.2 usando mod_aspdotnet

3

Tentando obter um site da Microsoft MVC2 para ser executado no servidor da Web Apache 2.2 (em execução no Windows) que utiliza o módulo mod_aspdotnet. Tem vários Hosts Virtuais do ASP.NET em execução, tentando adicionar outro. MVC2 tem NO página padrão (como a primeira versão do MVC tinha, por exemplo, default.aspx). Eu tentei várias alterações para a configuração: comentou 'DirectoryIndex', alterou para '/'. Set 'ASPNET' para 'Virtual', não vai carregar a primeira página, sempre obter: '403 Proibido, você não tem permissão para acessar / neste servidor.'

Abaixo está o meu http.conf:

LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo

<IfModule aspdotnet_module> 

 # Mount the ASP.NET /asp application
 #AspNetMount /MyWebSiteName "D:/ApacheNET/MyWebSiteName.com"
 Alias /MyWebSiteName" D:/ApacheNET/MyWebSiteName.com"

 <VirtualHost *:80>
 DocumentRoot "D:/ApacheNET/MyWebSiteName.com"
 ServerName www.MyWebSiteName.com
 ServerAlias MyWebSiteName.com
 AspNetMount / "D:/ApacheNET/MyWebSiteName.com"

# Other directives here
  <Directory "D:/ApacheNET/MyWebSiteName.com">
    Options FollowSymlinks ExecCGI
    AspNet All
   #AspNet Virtual Files Directory
    Order allow,deny
    Allow from all
    DirectoryIndex default.aspx index.aspx index.html
   #default the index page to .htm and .aspx
  </Directory>
 </VirtualHost>

 # For all virtual ASP.NET webs, we need the aspnet_client files
 # to serve the client-side helper scripts.
 AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows /Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"

 <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
   Options FollowSymlinks
   Order allow,deny
   Allow from all
 </Directory>

</IfModule>

Alguém já executou com sucesso o Microsofts MVC2 (ou a primeira versão do MVC) no Apache com o módulo mod_aspdotnet? Obrigado!

    
por flascuba 15.04.2010 / 21:11

2 respostas

2

Ativar aplicativos MVC no mod_aspdotnet é muito mais fácil do que isso. Se você simplesmente adicionar

SetHandler asp.net

para sua seção de diretório para forçar todas as solicitações através do módulo. Ele se comporta exatamente como um mapeamento de curinga no IIS. Como isso processará as solicitações all , você desejará fazer uma exclusão para conteúdo que não seja Net, adicionando uma seção de local como esta:

<Location ~ "^/MyWebSiteName/Content/.*"> SetHandler none </Location>

Onde o seu diretório de conteúdo contém todos os seus arquivos de imagem, css, etc. Alternativamente, você pode escrever a regra para corresponder a uma lista de extensões de arquivo, mas acho isso mais fácil. O benefício adicional disso é que você não precisa recodificar seus aplicativos. Um outro problema que você pode encontrar é com o MVC2, você pode não ter um locutor default.aspx para manipular suas solicitações de raiz. Para lidar com o uso mod_rewrite e acrescentou:

  RewriteEngine On
  RewriteBase /MyWebSiteName/
  RewriteRule ^$ Home [R=301]

para a configuração de meu diretório que força o redirecionamento do / request para o controlador Home.

    
por 08.05.2010 / 21:38
0

Uma resposta

Estou executando o XP Home com Apache 2.2.10 com NOSSL e MS SQL 2008 Express (Advanced). Se você quiser saber como fazer com que o ASP.NET seja executado no Apache, isso link ). (Eu sou um novo usuário e não posso enviar com mais de um hiperlink, vá lá) Eu escolho a opção de extensão .mvc. Abaixo está minha configuração:

LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
AddHandler asp.net mvc asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule aspdotnet_module> 
 Alias /MyWebSite"D:/ApacheNET/MyWebSite.com"

<VirtualHost *:80>
 DocumentRoot "D:/ApacheNET/MyWebSite.com"
 ServerName www.MyWebSite.com
 ServerAlias MyWebSite.com
 AspNetMount / "D:/ApacheNET/MyWebSite.com"

# Other directives here
  <Directory "D:/ApacheNET/MyWebSite.com">
    Options FollowSymlinks ExecCGI
    #AspNet Files Directories Virtual
    AspNet All
    Order allow,deny
    Allow from all
    DirectoryIndex index.html
    #default the index page to .htm and .aspx
  </Directory>
</VirtualHost>

Adicionou mvc ao AddHandler acima. Eu mudei a rota padrão em global.aspx:

routes.MapRoute(
                "HomeIndex",
                "default.mvc", 
                new { controller = "Home", action = "Index" }
                );

routes.MapRoute(
                "Default",
                "{controller}.mvc/{action}/{id}",
                new { action = "Index", id = "" }
                );

Em seguida, criei um arquivo index.html que redirecionava o visitante raiz recebido para o default.mvc. É sobre isso.

    
por 22.04.2010 / 20:37