2010-04-01 2 views
2

Я делаю некоторую работу с Web.Routing, используя его, чтобы иметь дружественные URL-адреса и приятные Rest как интерфейсы к сайту, который по существу представляет собой один IHttpHandler. Нет никаких веб-форм, обработчик генерирует все html/json и записывает их как часть запроса процесса.Web.Routing для сайта root или домашней страницы

Это хорошо работает для таких вещей, как/Сайты/Учет, например, но я не могу заставить его работать для корня сайта, т. Е. '/'.

Я попытался зарегистрировать маршрут с пустой строкой, с 'default.aspx' (который является пустым файлом aspx, который я держу в своей корневой папке, чтобы играть хорошо с cassini и iis). Я устанавливал RouteExistingFiles явно как false, но независимо от того, что я делаю при ударе по корневому URL-адресу, он по-прежнему открывает default.axpx, у которого нет кода, на который он наследуется, и содержит простой тег h1, чтобы показать, что я ударил его.

Я не хочу менять файл по умолчанию для перенаправления на нужный маршрут, я просто хочу, чтобы эквивалент маршрута «по умолчанию» применялся, когда не найдены другие маршруты, похожие на MVC.

Для справки, предыдущая версия сайта не использовала Web.Routing, но имела обработчик, на который ссылается в файле web.config, который отлично перехватывал запросы для root или default.aspx.

Характеристики: ASP.NET 3.5sp1, C#, без веб-форм, MVC или openrasta. Обычные старые IHttpHandlers.

ответ

0

Исправлена ​​моя проблема: проблема заключается в интегрированном веб-сервере, Cassini или некоторых подобных. Кажется, что он не играет хорошо с маршрутизацией, и по умолчанию просто вернет файл default.aspx или, если он отсутствует, покажет список каталогов.

Использование IIS с виртуальным каталогом отлично работает, но раздражает (расстраивает разделяющих код, потому что им нужно настроить новые виртуальные каталоги при открытии моего приложения и загрязняет мой собственный экземпляр IIS. Возможно, что я сделаю на данный момент, или настроить новое приложение вручную, чтобы я мог использовать только путь к хосту домена, как то, что будет существовать в реальном времени.

Альтернативой является использование обновленной версии cassini, см. here, которая работает, если по умолчанию .aspx отсутствует, но я еще не разработал, как его интегрировать с визуальной студией. Любая помощь будет оценена, но ее не очень важно, если у меня есть обходные пути.

+0

btw, это, по-видимому, исправлено для .Net 4/VS2010/2012 – Earlz

0

Я понимаю, что это действительно старый пост, но я просто столкнулся с той же проблемой, используя VS2012, поэтому я размещаю это здесь на всякий случай.

Я решил проблему, установив IIS Express и установив проект на использование IIS Express в Visual Studio. Решила проблему.

Смежные вопросы