【问题标题】:HTTP Handler problemHTTP 处理程序问题
【发布时间】:2010-10-07 14:17:54
【问题描述】:

我在 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 设置忽略了我在 &lt;httpHandlers&gt; 中的条目?

【问题讨论】:

    标签: c# .net asp.net httphandler


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 该死,我的托管公司的所有管理员都到周一才离开。啊。当我能抓住他们时,我会把他们带到那里。谢谢雷克斯!
      • @Chris 对此表示感谢,但在您与管理员确认这是问题所在后,您可能应该等待接受我的回答 :)
      • +1 太晚了。我的部署出错了。未选中“验证文件存在” - 成功!我去睡觉了。
      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多