我需要编写一个 HttpHandler 来提供 JavaScript 文件,这些文件是我项目中 .DLL 中的嵌入资源。视图中的引用不能直接看到这样的资源,因此我计划使用 HttpHandler 模块来拦截任何带有路径 /js/[file] 的请求,找到匹配的嵌入文件并返回脚本。
问题是我的 HttpHandler 代码从未被调用,尽管在 web.config 部分尝试了许多不同的设置。我显然遗漏了一些东西,但没有错误消息,我看不到那是什么。我得到的只是来自静态文件处理程序的 404。
Q1) 我是否遗漏了一些明显的东西?
Q2) 有没有办法让 IIS 告诉我为什么它没有调用我的处理程序?
摘要:我正在为 ASP.NET MVC 4 应用程序在 IIS Express (v8) 上进行测试。
我创建了一个实现 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 中),并确认它是。
我已经在堆栈溢出中搜索了类似的情况,并尝试了许多可能的解决方案......仍然没有乐趣。
哎呀,即使是 Jon Skeet 也有这些问题! 为什么我的 IHttpHandler 没有被调用?