在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)方法永远不会在我的对象上调用。使用底部定义,我的处理程序的任何实例都不会实例化。

在visual studio 2013中自定义js httphandler

经过几个小时的斗争,我终于找到了答案。关键是我必须为system.webServer

中的模块xml元素添加一个属性
    <modules runAllManagedModulesForAllRequests="true" >

如果没有此属性,则未调用进程请求处理程序。设置好之后,这就是处理程序部分所需要的全部内容。

  <add name="JSHandler"
       type="BusinessLayer.Web_Stuff.ScriptMinifyHandler, BusinessLayer"
       verb="*"
       path="*.js"
       resourceType="Unspecified"
       preCondition="integratedMode" />

我必须多读一些关于这个设置的内容,但是如果有人能告诉我更多关于为什么这样做的原因,我很乐意听到。