Недавно я взял существующее приложение веб-форм ASP.NET 3.5, которое было обновлено до .NET 4 в прошлом году (и работало нормально), и настроил его также на запуск ASP.NET MVC3 после публикации в блоге Скотта Хансельмана: Интеграция ASP.NET MVC 3 в существующие обновленные приложения ASP.NET 4 Web Forms .Он работает хорошо, и я успешно начал вводить представления, основанные на Razor, и существующие aspx
страницы продолжают работать.
Однако единственное, что перестало работать, - это пользовательский HttpHandler (наш балансировщик нагрузкинажимает на конкретный адрес, чтобы убедиться, что приложение доступно - обработчик для этого адреса).Web.config всегда объявлял обработчик в разделе system.web
следующим образом:
<httpHandlers>
<add verb="*" path="system/heartbeat.aspx"
type="My.Monitor.HttpHandlers.LoadBalancerHandler, My.Monitor"/>
</httpHandlers>
Теперь мы тестируем post-MVC3, и я получаю исключение, которое гласит:
Контроллер для пути '/system/heartbeat.aspx' не найден или не реализует IController.
Я определил метод RegisterRoutes
в моем Global.asax
и этот методвызывается с Application_Start
.В RegisterRoutes
я получил IgnoreRoute
декларации из блога Хансельмана:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
, которые, как я думал, должны были помешать системе маршрутизации принимать что-либо с расширением .aspx.
Я могу воспроизвести проблему в VS2010 при отладке, а среда развертывания работает под управлением IIS 6.
Что можно сделать, чтобы система маршрутизации не пыталась обработать этот адрес, чтобы пользовательский обработчик мог выполнить свою задачу?Любая помощь приветствуется.