• 注册自定义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.

  • 相关阅读:
    大数据是否有可能有效配置资源?
    在大数据时代,我们需要数据售货员
    在大数据时代,我们需要数据售货员
    粗糙的贝叶斯转化概率预测模型
    粗糙的贝叶斯转化概率预测模型
    MVC中的ViewData、ViewBag和TempData
    58被微信玩弄,你知道吗?
    你的以太网速度足够快吗?四种更快的速度正在路上&#183;&#183;&#183;&#183;&#183;&#183;
    hibernate预编译SQL语句中的setParameter和setParameterList
    创建单线性链表的不同表示方法和操作
  • 原文地址:https://www.cnblogs.com/walkerwang/p/2917770.html
Copyright © 2020-2023  润新知