Мне нужно написать HttpHandler, который будет обслуживать файлы JavaScript, которые являются встроенными ресурсами в .LLL в моем проекте. Ссылка в представлении не может непосредственно увидеть такой ресурс, поэтому я планировал использовать модуль HttpHandler, который перехватывал любой запрос с помощью пути /js/ [file], находил соответствующий встроенный файл и возвращал script.
Проблема в том, что мой код HttpHandler никогда не вызывается, несмотря на то, что в разделе web.config выполняется множество разных настроек. Мне явно не хватает чего-то, но без сообщений об ошибках я не вижу, что это такое. Все, что я когда-либо получаю, это 404 из статического обработчика файлов.
Q1) Я пропущу что-то очевидное?
Q2) Есть ли способ заставить IIS сказать мне, почему он не вызывает мой обработчик?
Резюме: Я тестирую IIS Express (v8) для приложения ASP.NET MVC 4.
Я создал простую библиотеку, которая реализует IHttpHandler и добавила ссылку на это в моем тестовом MVC-приложении, и следующие строки в web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="true" />
<handlers>
<add name="ejs" path="js/*" verb="*" type="EmbeddedJsHandler.EmbeddedJsHandler, EmbeddedJsHandler" preCondition="integratedMode" />
Библиотека есть, но она никогда не вызывается. Любой запрос с /js/test.js или что-то другое приводит к ошибке 404.
До сих пор я пробовал много разных конфигураций и настроек в коде обработчика. Я пробовал preCondition, resourceType = "Unspecified", modules = "IsapiModule" scriptProcessor = "% windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
Я пробовал пути:
js/*.js js/* js/*.*
Я проверил раздел настроек интегрированного режима (в файле system.webServer) и подтвердил его.
Я искал переполнение стека для подобных случаев и пытался использовать многие из возможных решений.. до сих пор нет радости.
Черт возьми, даже у Джона Скита есть такие проблемы! Почему мой IHttpHandler не называется?