在visual studio 2013中自定义js httphandler
本文关键字:自定义 js httphandler 2013 visual studio | 更新日期: 2023-09-27 18:17:58
我正在尝试连接一个自定义IHttpHandler来处理对我的网站的*.js文件的请求。对于我的生活,我不能得到我的httphandler甚至由IISExpress创建,当请求一个js文件到我的web服务器。我已经尝试了这个系统的几种变体。webServer处理程序设置,包括。
<add name="MyHandler"
type="BusinessLayer.Web_Stuff.MyHandler, BusinessLayer"
verb="*"
path="*.js"
resourceType="Unspecified"
preCondition="integratedMode"
modules="IsapiModule"
scriptProcessor="c:'windows'Microsoft.net'framework'v4.0.30319'aspnet_isapi.dll"/>
和
<add name="JSHandler"
type="BusinessLayer.Web_Stuff.MyHandler, BusinessLayer"
verb="GET,POST" path="*.js"
resourceType="Unspecified"
preCondition="integratedMode" />
我在Visual Studio 2013中使用IISExpress运行此。如果我将路径改为*。测试而不是js那么这个处理程序工作没有任何问题,但我不能使它为*.js文件工作。看起来IISExpress通过从磁盘提供文件来处理这些请求。有没有人知道如何绕过,所以我可以使我的处理程序处理请求的js文件。
更正:当我使用顶部网页。使用IsapiModule指定的配置设置,MyHandler的实例被实例化,但是接口的ProcessRequest(HttpContext context)方法永远不会在我的对象上调用。使用底部定义,我的处理程序的任何实例都不会实例化。
经过几个小时的斗争,我终于找到了答案。关键是我必须为system.webServer
中的模块xml元素添加一个属性 <modules runAllManagedModulesForAllRequests="true" >
如果没有此属性,则未调用进程请求处理程序。设置好之后,这就是处理程序部分所需要的全部内容。
<add name="JSHandler"
type="BusinessLayer.Web_Stuff.ScriptMinifyHandler, BusinessLayer"
verb="*"
path="*.js"
resourceType="Unspecified"
preCondition="integratedMode" />
我必须多读一些关于这个设置的内容,但是如果有人能告诉我更多关于为什么这样做的原因,我很乐意听到。