Я работаю над существующим проектом в ASP.NET, который основан в папке, содержащей точки
http://localhost/My.Awesome.WebClient/
Эта установка прекрасно работает с использованием интегрированного сервера Visual Studio Develompent, но завершается неудачно, когда я добавляю содержимое MVC и пытаюсь получить к нему доступ ( Ошибка 404 Ресурс не найден ).
http://msdn.microsoft.com/en-us/library/ee941656.aspx, кажется, объясняет проблему:
Если вы создаете веб-сайт файловой системы в Visual Studio 2010, и веб-сайт находится в папке, содержащей точку (.) В имени папки, маршрутизация URL-адресов не будет работать надежно. Ошибка HTTP 404 возвращается из некоторых виртуальных путей. Это происходит потому, что Visual Studio 2010 запускает сервер разработки Visual Studio (Cassini), используя неверный путь к корневому виртуальному каталогу.
Однако проект представляет собой веб-проект , а не веб-сайт, и он потерпел неудачу только тогда, когда я начал использовать MVC.
Проблема может быть легко воспроизведена:
- Файл - Новый - Проект - Веб-приложение ASP.NET MVC 3
- Редактирование настроек проекта, Интернет: использование Visual Studio Development Server
- Установить виртуальный путь к тому, что содержит точку
- Попробуйте запустить сайт
Есть ли способ заставить это работать, кроме использования IIS вместо Cassini?
Edit:
Я нашел обходной путь только сейчас. На самом деле он не работает в сценарии развертывания, но может помочь в поиске решения:
в моем файле Global.asax.cs:
routes.MapRoute(
"Default", // Route name
// Notice that I added the virtual path here
"My.Awesome.WebClient/{controller}/{action}/{id}", // URL with parameters
new { action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
// This is also new
routes.MapRoute(
"Root", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Используя этот обходной путь, мои MVC-сайты работают, но только со следующим URL:
http://localhost/My.Awesome.WebClient/My.Awesome.WebClient/