我正在尝试使用自定义处理程序来处理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过滤器...
答案 0 :(得分:33)
如果主机盒是集成管道中的IIS7,您需要将其添加到配置的其他位:
<system.webmodules>
....
<modules>
<add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/>
</modules>
....
</system.webmodules>
如果是IIS6,那么您需要将* .robots映射到ASP.NET ISAPI DLL。
(对于非Skeets,您可以按照以下方式执行此操作)
答案 1 :(得分:9)
乔,
您必须配置IIS脚本映射以将* .robot传递给aspnet_isapi.dll。