zoukankan      html  css  js  c++  java
  • 注册自定义HTTP Handlers

    项目用到了highcharts.js来绘图,想本地导出,于是在github找到了这个项目ASP.NET Highcharts export module,当然,我说的是很久以前了,还在做MVC3项目的时候,当时一切顺利,把几个dll导入,修改web.config文件以支持自定义的http handler(以HighchartsExport.axd访问),并且立即导出成功。

    这一次再次用到了highcharts,同样需要导出,结果却死导不出,总是报404错误,不过就是mvc4+NF4.5而已。上述项目提供了两个web.config的示例文件,我一一测试,均失败,官方要求的是在web.config的system.web节点中注册如下节点:

    <httpHandlers>
          <add verb="POST"
               path="HighchartsExport.axd"
               type="Tek4.Highcharts.Exporting.HttpHandler, Tek4.Highcharts.Exporting"/>
    </httpHandlers>

    干脆查了一下文档,注册自定义http handler的方式,果然与该项目作者介绍的不一样,修改后成功,只是同样的iis环境下,老mvc3项目成功,示例的asp.net网站也成功,这就百撕不得骑姐了。

    官方文档链接

    其并不是给了一个万应良药,只是分三种情况(应该是六种情况,分别对应了独立dll和写到app_code里面两大类,区别就在于app_code里面的类在注册的时候不需要写命名空间,此处不介绍,直接看文档吧):IIS6.0,IIS7.0经典模式,以及IIS7.0集成模式

    IIS6下,照着上述代码配置即可。

    IIS7的经典模式下,同样需要照着上述代码配置,但是还不够,需要继续在configuration的根节点下配置system.webServer节点:

    <system.webServer>
    <add name=SampleHandler" verb="*" path="SampleHandler.new" 
      Modules="IsapiModule" 
      scriptProcessor="FrameworkPath\aspnet_isapi.dll"
      resourceType="File" />
    </system.webServer>

    其中FrameworkPath有%windir%\Microsoft.NET\Framework64\v4.0.30319%windir%\Microsoft.NET\Framework32\v4.0.30319两种取值,事实上就是你的Aspnet_isapi.dll所在的文件夹。

    而在集成模式下,已经不需要配置上述第一节,直接配置system.webServer即可,而且也不需要蛋疼地定位aspnet_isapi.dll文件了,因为它的resourceType已经不是file了:

    <system.webServer>
    <handlers>
      <add name="SampleHandler" verb="*" 
    	path="SampleHandler.new" 
    	type="SampleHandler, SampleHandlerAssembly" 
    	resourceType="Unspecified" />
    </handlers>
    </system.webServer>

    我做的是最后这一种更改,成功。

    同时顺便做了个小例子,自己在app_code里面写了一个httphandler,输出了几个字,同样用最后这种配置方式(type处不需要写命名空间了,因为是在app_code里面,写全名即可),正常输出。可见这个问题仅仅是该项目作者的示例项目阐述不详细所致,自己找到注册自定义handler的方法即可使用。

    顺便送上一句自stackoverflow的话:The <system.web> section applies to IIS6 and below whereas <system.webServer> applies to IIS7 and above.

  • 相关阅读:
    Jessica's Reading Problem POJ
    FatMouse and Cheese HDU
    How many ways HDU
    Humble Numbers HDU
    Doing Homework again
    Stacks of Flapjacks UVA
    Party Games UVA
    24. 两两交换链表中的节点
    面试题 03.04. 化栈为队
    999. 可以被一步捕获的棋子数
  • 原文地址:https://www.cnblogs.com/walkerwang/p/2917770.html
Copyright © 2011-2022 走看看