2

我在 web.config 文件中设置了一个 HTTP 处理程序:

        <add verb="*" path="*_*.aspx" type="SeoHandler"/>

并在我的网站根目录中有一个文件 SeoHandler.ashx,它指向 App_Code 文件夹中的 SeoHandler.ashx.cs(该网站不是 Web 应用程序项目)。

当我在本地运行该站点并输入“dork_test.aspx”之类的 URL 时,请求将被重定向到处理程序,然后由它处理业务。

但是当编译的站点在我的域上运行时,“dork_test.aspx”将导致:

“/”应用程序中的服务器错误。

无法找到该资源。

说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/dork_test.aspx

为什么 SeoHandler 会在本地捕获“dork_test.aspx”请求,而不是在服务器上?

不确定这是否重要,但是当我在我的域上点击 URL SeoHandler.ashx 时,处理程序的工作方式就像它假设的那样。

网络主机是否可能有一些 IIS 设置忽略我的输入<httpHandlers>

4

3 回答 3

8

检查服务器上的 IIS 是否未设置 .NET 处理程序以验证请求的路径是否实际存在:

  • 转到网站或虚拟目录的属性
  • 主目录选项卡
  • 点击下方的“配置”
  • 找到 .ASPX 的扩展名并单击编辑,有一个复选框显示“验证该文件是否存在”。

如果选中该复选框,.NET 将不会处理任何未映射到同一位置的物理文件的请求。

于 2009-02-14T02:52:46.987 回答
1

我能够让它在 IIS 7 上运行。您是否使用安装了 URLScan 之类的共享托管服务提供商?你能看到服务器级别是否有非默认设置吗?

于 2009-02-14T02:46:12.323 回答
1

Rex M 得到了正确的答案,但我只是尝试了类似于处理 .jpg 的方法,但它失败了。

显示“验证该文件是否存在”的复选框非常重要,但该文件夹的授权仍然存在问题。

然后我尝试更改为该文件夹添加的新 web.config 并添加

    <authorization>
                       <allow users="*" />
    </authorization>

它奏效了。因此,授权过程中发生了一些事情,无法让我处理 .jpg 请求。是的,我在该应用程序中通过了身份验证,如果我尝试请求 .jpg,它仍然会失败。

希望这可以解决以证明您的处理程序工作正常,但为此您需要遇到一个重大的安全问题......

于 2010-02-09T11:16:53.890 回答