asp.net – 为什么不调用我的IHttpHandler?

前端之家收集整理的这篇文章主要介绍了asp.net – 为什么不调用我的IHttpHandler?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图获得一个自定义处理程序在ASP.NET 3.5中的特定URL(或一组URL)。

处理程序实际上没有做任何重要的工作 – 它只是记录请求。我可以发布的代码,如果任何事情,它相关的,但我真的不认为它被打电话。 (特别是,对于正常的异常,我得到一个自定义错误页面和日志…这里我只是得到的香草IIS 404.)

这里是web.config文件的相关位:

<system.web>
  <httpHandlers>
    <add verb="GET,POST" path="*.robot" validate="false" 
         type="CSharpInDepth.Wave.RobotHandler,CSharpInDepth"/>
  </httpHandlers>
</system.web>

(很明显,在这一节也有其他的东西,但我不认为它的相关性。)

在本地,运行在dev服务器下,它工作正常。在我真正的盒子,我总是得到一个404.网站目录下的所有内容是相同的(通过svn复制)。这包括bin目录包含CSharpInDepth.dll,我已经验证包含CSharpInDepth.Wave.RobotHandler。

我试图获取http://csharpindepth.com/foo.robot,只得到一个404

我试过有和没有程序集名称,特定的URL或通配符…没有什么工作。

我相信我刚刚错过了一些简单的标志在某处的IIS配置,但我被吹了,如果我可以找到它…

编辑:这是IIS版本6.尝试将* .robot添加到ISAPI过滤器现在…

解决方法

如果托管盒是IIS7在集成管道中,您需要将其添加到配置的其他位:
<system.webmodules>
  ....
  <modules>
    <add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler,CSharpInDepth"/>
  </modules>
  ....
</system.webmodules>

如果是IIS6,那么你需要将* .robots映射到ASP.NET ISAPI DLL。

(对于非Skeets你这样做如下)

>打开IIS管理员。>右键单击您要配置的网站并从中选择属性上下文菜单。这将显示网站属性“对话框。>选择主目录“选项卡,然后单击配置按钮。这会显示应用程序配置对话框。>单击加。>选择aspnet_isapi.dll从.NET框架目录,您要映射的扩展名所有动词,或只是那些你想映射。>单击确定。

猜你在找的asp.Net相关文章