Как использовать маршрутизацию URL в нескольких средах?

#c# #asp.net #.net-4.0 #webforms #url-routing

#c# #asp.net #.net-4.0 #веб-формы #url-маршрутизация

Вопрос:

У меня есть три разные среды, с которыми мне нужно иметь возможность использовать маршрутизацию URL:

  1. Отладка
  2. ЖИВЫЕ КОНЦЕРТЫ
  3. ДЕМОНСТРАЦИЯ

Домашние страницы для этих трех:

  1. http://localhost:48060/Login.aspx
  2. http://192.168.0.145/Live/Login.aspx
  3. http://www.website.com/Demo/Login.aspx

И Live, и Demo находятся на том же веб-сайте по умолчанию, что и веб-приложения (live доступен только внутри, а demo — снаружи).

Я хочу сопоставить их с

  1. http://localhost:48060/login
  2. http://192.168.0.145/Live/login
  3. http://www.website.com/Demo/login

Какой рекомендуемый подход без утроения каждого сопоставления маршрутов?

Спасибо!

Пример того, как я добавляю маршрут для 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. Ах да, это могло бы сработать. Рад, что вы получили свое исправление.