#c# #asp.net #.net-4.0 #webforms #url-routing
#c# #asp.net #.net-4.0 #веб-формы #url-маршрутизация
Вопрос:
У меня есть три разные среды, с которыми мне нужно иметь возможность использовать маршрутизацию URL:
- Отладка
- ЖИВЫЕ КОНЦЕРТЫ
- ДЕМОНСТРАЦИЯ
Домашние страницы для этих трех:
- http://localhost:48060/Login.aspx
- http://192.168.0.145/Live/Login.aspx
- http://www.website.com/Demo/Login.aspx
И Live, и Demo находятся на том же веб-сайте по умолчанию, что и веб-приложения (live доступен только внутри, а demo — снаружи).
Я хочу сопоставить их с
Какой рекомендуемый подход без утроения каждого сопоставления маршрутов?
Спасибо!
Пример того, как я добавляю маршрут для Debug env:
routes.MapPageRoute("Login", "login", "~/Views/Login.aspx");
Подробная информация:
Когда я попытался добавить
routes.MapPageRoute("Login", "login", "~/Live/Views/Login.aspx");
routes.MapPageRoute("Login", "login", "~/Demo/Views/Login.aspx");
маршруты не работали. Я получил ошибку 404 при попытке посетитьhttp://192.168.0.145/Live/login Не уверен, в чем проблема.
Я использую IIS 7.1 для опубликованных версий и все, что Win XP pro использует для отладки.
Ответ №1:
Ваши «среды», похоже, являются подкаталогами корневого каталога приложения. Поскольку первый из ваших трех URL-адресов не содержит второго значения (например, «http://localhost:48060/debug/login «) определить один маршрут для всех трех будет непросто.
Если эти вторичные среды определены как их собственные приложения, то вы должны иметь возможность использовать один и тот же маршрут в каждой из них, но нам потребуется больше деталей, чтобы помочь вам в дальнейшем.
Пожалуйста, опишите вашу ситуацию немного лучше, и я обновлю свой ответ дополнительной информацией.
Комментарии:
1. При локальном запуске с ASP.NET веб-сервер и отладчик, он не использует вложенную папку (no Debug folder). Я публикую его во вложенной папке на веб-сервере (либо в реальном времени, либо в демо-версии). Я не понимаю, что еще вы хотите, чтобы я сказал в своем вопросе.
2. Я специально спросил вас, помечена ли вложенная папка как приложение. Я действительно не могу сделать этот запрос более понятным.
3. Понятно. Да, оно помечено как приложение. (как в реальном времени, так и в демо-версии)
4. Я начинаю немного лучше понимать ваш ответ. Поскольку тильда (~) указывает на корень приложения, мой маршрут должен работать для всех трех. Единственная проблема заключается в том, что маршрут не работает для всех трех. Может быть, настройка IIS, о которой я не знаю?
Ответ №2:
Обнаружилась проблема с конфигурацией, о которой m $ забыл упомянуть. Заставил это работать, изменив мой web.config для использования runAllManagedModulesForAllRequests
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
Комментарии:
1. Ах да, это могло бы сработать. Рад, что вы получили свое исправление.