Ни один из предыдущих ответов не работал для меня.
Я использую IIS 8.5, .Net v4.0, Integrated
, и все еще получал 404 со следующей конфигурацией обработчика:
<system.webServer>
<handlers>
<add name="testEmail" path="*.em" verb="*" type="MyApp.testRazorEmailHandler, MyApp" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
Я включил трассировку и обнаружил следующее:
116. -HANDLER_CHANGED
OldHandlerName testEmail
NewHandlerName System.Web.Mvc.MvcHandler
NewHandlerModules ManagedPipelineHandler
NewHandlerScriptProcessor
NewHandlerType System.Web.Mvc.MvcHandler, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Как вы можете видеть, похоже, что он правильно принял запрос, используя мой пользовательский HttpHandler testEmail
, но MVC украл его .
Я открыл свои определения маршрутов в RouteConfig.cs
и обнаружил, что добавление:
routes.IgnoreRoute("{resource}.em");
Я получил его, чтобы игнорировать запросы, предназначенные для моего обработчика.
Надеюсь, это кому-нибудь поможет - я рвал на себе волосы!