Asp.net 为什么我的IHttpHandler没有被叫来?

Asp.net 为什么我的IHttpHandler没有被叫来?,asp.net,ihttphandler,Asp.net,Ihttphandler,我正在尝试为ASP.NET3.5中的一个特定URL或一组URL使用自定义处理程序 处理程序实际上还没有做任何重要的事情——它只是记录请求。如果有人认为代码是相关的,我可以发布代码,但我真的认为根本没有人调用它。特别是,对于正常的异常,我会得到一个自定义的错误页面和日志。。。这是我刚买的香草IIS 404 下面是web.config文件的相关部分: 显然,这一部分还有其他内容,但我认为这与此无关 在本地,在dev服务器下运行,工作正常。在我真正的盒子上,我总是得到一个404。网站目录下的所有内容都

我正在尝试为ASP.NET3.5中的一个特定URL或一组URL使用自定义处理程序

处理程序实际上还没有做任何重要的事情——它只是记录请求。如果有人认为代码是相关的,我可以发布代码,但我真的认为根本没有人调用它。特别是,对于正常的异常,我会得到一个自定义的错误页面和日志。。。这是我刚买的香草IIS 404

下面是web.config文件的相关部分:

显然,这一部分还有其他内容,但我认为这与此无关

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

我试着去拿一个404

我尝试过使用或不使用程序集名称、特定URL或通配符。。。什么都没用

我肯定我在IIS配置中遗漏了一些简单的标志,但如果我能找到它,我会大吃一惊

编辑:它是IIS版本6。正在尝试将*.robot添加到ISAPI筛选器…

Jon


您必须将IIS脚本映射配置为将*.robot传递到aspnet_isapi.dll。

如果托管框是集成管道中的IIS7,则需要将其添加到配置的其他位:

<system.webmodules>
  ....
  <modules>
    <add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/>
  </modules>
  ....
</system.webmodules>
如果是IIS6,则需要将*.robots映射到ASP.NET ISAPI DLL

对于非双向飞碟,您可以按如下方式执行此操作

打开IIS管理员。 右击 要配置的网站 并从表单中选择属性 上下文菜单。这将显示 “网站属性”对话框。 选择 单击主目录选项卡,然后单击 配置按钮。这将 显示应用程序 “配置”对话框。 点击 添加 选择aspnet_isapi.dll 从.NET framework目录, 要映射和删除的扩展名 要么是所有动词,要么就是那些动词 你想要地图。 单击“确定”。
呸-在实验之后,我刚刚在问题中编写了一组说明。将再次编辑它们:啊。。。它适用于我的foo.robot示例,但现在我只需要提供jsonrpc完整URL-。显然,它本身没有扩展。。。有什么线索吗?你没有希望了。目录由IIS提供服务,而不是ASP.NET。你可以通过创建一个default.aspx文件来伪造它,当然也可以通过ISAPI重写器将它映射到一个真正的aspx,此时ASP.NET将启动in@blowdart:那么ASP.NET MVC如何进行映射呢?这需要重写器吗?我将尝试使用default.aspx文件…@blowdart:Bah。它服务于重定向。那可不行。嗯。可能会向Wave团队抱怨,要求他们重新考虑他们的URL选择:
<system.webmodules>
  ....
  <modules>
    <add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/>
  </modules>
  ....
</system.webmodules>