Почему маршрутизация ASP.NET имеет приоритет над разделом обработчиков HTTP web.config?

Наш магазин интегрирует ASP.NET MVC в большое веб-приложение, которое использует пользовательские и сторонние обработчики HTTP, определенные в web.config в разделе system.webServer \ handlers . Использование HTTP-обработчиков таким образом было отличным для нас, потому что нам не нужно перекомпилировать приложение или иметь фактическую страницу обработчика на диске где-то в веб-области для каждого экземпляра продукта.

Действительно ли необходимо добавить явные маршруты игнорирования в наш global.asax, чтобы среда выполнения могла соблюдать наши обработчики, определенные в web.config? Я бы подумал, что Web.Routing будет вызываться после того, как обработчики, определенные в system.webServer \ handlers, будут проверены (а не наоборот).

Мы используем модульную конструкцию, которая позволяет добавлять / удалять Обработчики из web.config при добавлении функций. С введением маршрутизации MVC нам кажется, что нам нужно добавить маршруты игнорирования в файл global.asax для каждого возможного обработчика, определенного в web.config.

Обратите внимание на фактический файл для этих обработчиков. t существуют на диске - они виртуальны и встроены в сборку. Вот пример стороннего обработчика, который теперь требует явного Ignore Route в global.asax:

<system.webServer>
    <handlers>
          <!-- telerik radcontrols -->
          <add name="TelerikDialogHandler" verb="*" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Version=2009.1.402.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4"></add>
    </handlers>
</system.webServer>

Итак, для записи, если вы используете System.Web.Routing, вы должны включить Ignore Routes для Http Handlers, указанных в Web.Config? Или, может быть, я что-то делаю не так?

9
задан Steve Flook 23 November 2010 в 14:57
поделиться