HTTP处理程序问题

时间:2009-02-14 02:32:00

标签: c# .net asp.net httphandler

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

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

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

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

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

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

     

无法找到资源。

     

描述:HTTP 404.资源   你正在寻找(或其中一个   依赖)可能已被删除,   它的名字改了,或者是   暂时不可用。请   查看以下网址并确保   拼写正确。

     

请求的网址:/dork_test.aspx

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

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

Web主机是否有可能忽略我在<httpHandlers>中的条目的某些IIS设置?

3 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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

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

它有效。因此授权过程中有一些事情不允许我处理.jpg请求。是的,我在该应用程序中进行了身份验证,如果我尝试请求.jpg,它仍然会失败。

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