如何使用IHttpHandler处理所有请求?

时间:2015-04-02 19:34:13

标签: c# asp.net iis

我正在尝试设置一个精简的Web服务器,将所有URL请求传递给单个IHttpHandler,而不是尝试将URL与服务器的文件结构相匹配。

我在那里有IHttpHandler,以及一些自定义模块,当我直接进入我的域时,它们按预期响应,但如果我通过以下方式访问该站点:

http://mysite/some/random/url

我收到404文件未找到错误。

我假设删除其中一个模块可能会覆盖它:

        <remove name="UrlRoutingModule-4.0" />
        <remove name="UrlMappingsModule" />
        <remove name="FileAuthorization" />
        <remove name="UrlAuthorization" />

但IIS仍在尝试将URL与服务器文件结构相匹配。我已经删除了我不使用的每个模块,它仍然会返回404。

我之前实际上已经这样做了,但我似乎无法完全记住或在网上找到我的工作方式。

我现在基本上没有想法 - 有人吗?

1 个答案:

答案 0 :(得分:0)

我根据@Alexei Levenkov的建议添加了runAllManagedModulesForAllRequests。虽然我记得肯定需要这样做,但它没有立即解决它。经过多次调整后我发现IIS设置了:

resourceType="Either"
处理程序上的

。我测试过将它更改为File,问题是针对文件类型URL修复的,但当然不是文件夹“样式”的。将其更改为:

resourceType="Unspecified"

修复了所有网址的问题。