Попытка запустить веб-сайт 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. Вот и все.