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框架目录,您要映射的扩展名所有动词,或只是那些你想映射。>单击确定。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....