Подтвердить что ты не робот

Перенаправление URL-адреса IIS и маршрутизация URL-адресов

Я планировал использовать маршрутизацию URL для приложения Web Forms. Но после чтения некоторых сообщений, я не уверен, что это простой подход.

Лучше ли использовать URL Rewrite module для веб-форм? Но это только для IIS7. Первоначально было некоторое оживление, что маршрутизация URL-адресов полностью отключена от Asp.Net MVC и может использоваться для веб-форм.

Хотелось бы услышать любые предложения.

4b9b3361

Ответ 1

Там отличная статья здесь о различиях между ними от члена команды IIS.

Одно предостережение, которое я бы посоветовал, - это то, что для WebForms вам нужно быть осторожным при использовании маршрутизации. Я написал пример реализации того, как вы будете использовать маршрутизацию с помощью WebForms, которая устраняет эти проблемы и, надеюсь, поможет ответить на ваш вопрос.

Ответ 2

Это лучшая статья, которую я нашел по этой теме: Переписывание URL-адресов IIS и маршрутизация ASP.NET Руслана Якушева.

Перенаправление URL-адреса IIS

Когда клиент делает запрос на веб-сервер для определенного URL-адреса, компонент перезаписи URL-адресов анализирует запрашиваемый URL-адрес и изменяет его на другой URL-адрес на том же сервере. Компонент перезаписи URL-адресов выполняется очень рано в конвейере обработки запросов, поэтому он может модифицировать запрошенный URL до того, как веб-сервер примет решение о том, какой обработчик должен использовать для обработки запроса.

IIS URL Rewriting

Маршрутизация ASP.NET

Маршрутизация ASP.NET реализуется как модуль управляемого кода, который подключается к конвейеру обработки запросов IIS на этапе "Решающий уровень кэша" (событие PostResolveRequestCache) и на этапе Map Handler (PostMapRequestHandler). Маршрутизация ASP.NET настроена на выполнение для всех запросов, сделанных в веб-приложении.

IIS URL Routing

Различия между переписыванием URL-адресов и маршрутизацией ASP.NET:

  • Переписывание URL-адресов используется для управления URL-адресами до того, как запрос обрабатывается веб-сервером. Модуль перезаписи URL-адреса ничего не знает о том, что обработчик в конечном итоге обработает переписанный URL-адрес. Кроме того, фактический обработчик запроса может не знать, что URL был переписан.
  • Маршрутизация ASP.NET используется для отправки запроса обработчику на основе запрошенного URL-адреса. В отличие от перезаписи URL, компонент маршрутизации знает о обработчиках и выбирает обработчик, который должен генерировать ответ для запрошенного URL-адреса. Вы можете рассматривать маршрутизацию ASP.NET как усовершенствованный механизм отображения обработчика.

В дополнение к этим концептуальным различиям существуют некоторые функциональные различия между переписыванием URL-адреса IIS и маршрутизацией ASP.NET:

  • Модуль перезаписи URL-адресов IIS может использоваться с любым типом веб-приложения, которое включает ASP.NET, PHP, ASP и статические файлы. Маршрутизация ASP.NET может использоваться только с веб-приложениями на основе .NET Framework.
  • Модуль перезаписи URL-адресов IIS работает одинаково независимо от того, используется ли для пула приложений интегрированный или классический режим конвейера IIS. Для маршрутизации ASP.NET предпочтительнее использовать встроенный режим конвейера. Маршрутизация ASP.NET может работать в классическом режиме, но в этом случае URL-адреса приложений должны включать расширения файлов или приложение должно быть настроено на использование обработчика обработчика "*" в IIS.
  • Модуль URL-rewrite может принимать решения о перезаписи на основе доменных имен, заголовков HTTP и переменных сервера. По умолчанию маршрутизация ASP.NET работает только с URL-адресами и с заголовком HTTP-Method.
  • В дополнение к переписыванию модуль URL-перезаписи может выполнять перенаправление HTTP, выдавать пользовательские коды состояния и прерывать запросы. Маршрутизация ASP.NET не выполняет эти задачи.
  • Модуль URL-rewrite не расширяется в текущей версии. Маршрутизация ASP.NET полностью расширяема и настраивается.

Ответ 3

Вы хотите, чтобы отформатированные URL-адреса были factory для нерестующих страниц?

или вы хотите, чтобы .aspx ушел?

переписывание, заключается в том, чтобы сделать .aspx уйти или просто убрать URL-адрес.

Маршрутизация - это поиск запроса и определение того, какой объект должен обрабатывать его. Они звучат одинаково, у фила-хауса есть несколько хороших статей по этому вопросу.

в iis6, isapiRewrite, очень хорошо

Ответ 4

Недавно я только что написал свою собственную систему перезаписи, чтобы сделать URL-адреса на моих сайтах лучше. В принципе, вам нужно будет написать свой собственный IHttpModule и добавить его в свой web.config для перехвата входящих запросов. Затем вы можете использовать HttpContext.Current.RewritePath, чтобы изменить то, на что вы указываете.

Вы также захотите настроить свой сайт на использовать aspnet_isapi для всего.

Вы обнаружите множество небольших проблем на пути, например, пытаясь работать со страницами, использующими на них "хвосты" (например, для PageMethods) или путем перемещения элементов страницы и формировать обратные вызовы, но вы пройдете через них.

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

Ответ 5

Вы можете проверить мой ответ на этот вопрос: ASP.NET - создание собственной системы маршрутизации. Я включаю некоторые полезные ссылки, чтобы помочь создать собственную систему маршрутизации с использованием метода перезаписи URL или нового механизма маршрутизации, который вы можете использовать, который вышел из проекта ASP.NET MVC.

Ответ 6

Проект Dynamic Data, доступный с .Net 3.5 SP1, показывает хороший пример реализации маршрутизации URL.

Ответ 7

Для перезаписи URL-адресов в IIS IIRF работает в IIS5, 6, 7. Бесплатно. Легко. Быстро. Открытый исходный код. Поддержка регулярных выражений.