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

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

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

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

7 ответов


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

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


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

перезапись URL IIS

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

IIS URL Rewriting

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

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

IIS URL Routing

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

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

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

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

вы хотите, чтобы форматированные URL-адреса были фабрикой для нереста страниц?

или вы хотите сделать .aspx уйти?

переписывание, для создания .aspx уходит или просто убирает url-адрес.

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

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


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

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

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

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


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


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


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