Назад | Перейти на главную страницу

Настройка ASP.NET MVC2 на Apache 2.2 с помощью mod_aspdotnet

Попытка запустить веб-сайт Microsoft MVC2 на веб-сервере Apache 2.2 (работающем в Windows), который использует модуль mod_aspdotnet. Запустите несколько виртуальных хостов ASP.NET, пытаясь добавить еще один. MVC2 имеет Нет страница по умолчанию (например, в первой версии MVC был default.aspx). Я пробовал различные изменения в конфигурации: закомментировал «DirectoryIndex», изменил его на «/». Установите «ASPNET» на «Виртуальный», первая страница не будет загружаться, всегда будет: «403 запрещено, у вас нет разрешения на доступ к / на этом сервере».

Ниже из моего 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>

Кто-нибудь успешно запускал Microsofts MVC2 (или первую версию MVC) на Apache с модулем mod_aspdotnet? Спасибо !

Включить приложения MVC в mod_aspdotnet намного проще. Если вы просто добавите

SetHandler asp.net

в раздел вашего каталога, чтобы все запросы проходили через модуль. Он ведет себя так же, как отображение подстановочных знаков в IIS. Поскольку это будет обрабатывать все запросы, вы захотите сделать исключение для контента, отличного от .NET, добавив такой раздел местоположения:

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

Где ваш каталог Content содержит все ваши файлы изображений, css и т. Д. В качестве альтернативы вы можете написать правило для соответствия списку расширений файлов, но мне это проще. Дополнительным преимуществом этого является то, что вам не нужно перекодировать свои приложения. Еще одна проблема, с которой вы можете столкнуться, заключается в том, что в MVC2 у вас может не быть placehoder default.aspx для обработки ваших корневых запросов. Чтобы разобраться с использованием mod_rewrite и добавил:

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

в мою конфигурацию каталога, которая принудительно перенаправляет запрос / на домашний контроллер.

Ответ

Я использую XP Home с Apache 2.2.10 с NOSSL и MS SQL 2008 Express (Advanced). Если вы хотите узнать, как заставить ASP.NET работать на Apache, сделайте этот первый. Я узнал о MVC на веб-серверах из (http://www.asp.net/learn/mvc/tutorial-08-cs.aspx). (Я новый пользователь и не могу отправить более одной гиперссылки, поймите) Я выбираю вариант расширения .mvc. Ниже моя конфигурация:

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>

Добавлено mvc в AddHandler выше. Я изменил маршрут по умолчанию в global.aspx:

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

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

Затем я создал файл index.html, который перенаправил входящего корневого посетителя на default.mvc. Вот и все.