Qua*_*ngo 10 asp.net httphandler iis-express
我需要编写一个HttpHandler,它将提供JavaScript文件,这些文件是我项目中.DLL中嵌入的资源.视图中的引用无法直接看到这样的资源,因此我计划使用HttpHandler模块,该模块将使用path/js/[file]拦截任何请求,找到匹配的嵌入文件并返回脚本.
问题是我的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" />
Run Code Online (Sandbox Code Playgroud)
图书馆就在那里,但它从未被调用过.任何使用/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?
Qua*_*ngo 26
最后偶然发现它 - 它是RouteConfig.cs文件中的缺少routes.IgnoreRoute() - MVC路由引擎未配置为忽略此路径,因此将其传递给静态文件处理程序.
卫生署!
检查一下:
要注册在集成模式下运行的IIS 7.0的HTTP处理程序:
编译HTTP处理程序类并将生成的程序集复制到应用程序根文件夹下的Bin文件夹中.
在应用程序的Web.config文件中,在system.webServer部分中创建一个处理程序元素.
以下示例显示如何注册响应SampleHandler.new资源请求的HTTP处理程序.处理程序被定义为程序集SampleHandlerAssembly中的类SampleHandler.
<configuration>
<system.webServer>
<handlers>
<add name="SampleHandler" verb="*"
path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly"
resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
注:该resourceType为属性执行的验证文件存在于IIS管理器中的IIS 6.0选项相同的功能.
对于在集成模式下运行的IIS 7.0,仅需要在处理程序元素中进行注册.
| 归档时间: |
|
| 查看次数: |
14073 次 |
| 最近记录: |