我在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设置?
答案 0 :(得分:8)
在服务器上检查IIS是否设置了.NET处理程序以验证所请求的路径是否存在:
如果选中该复选框,.NET将不会提供任何未映射到同一位置的物理文件的请求。
答案 1 :(得分:1)
我能够在IIS 7上运行它。您是否正在使用安装了URLScan之类的共享托管服务提供商?你能看到服务器级别是否有非默认设置吗?
答案 2 :(得分:1)
Rex M得到了正确的答案,但我只是尝试了类似于处理.jpg的东西而且它失败了。
显示“验证文件是否存在”的复选框非常重要,但您仍然遇到该文件夹的授权问题。
然后我尝试更改我为该文件夹添加的新web.config并添加了
<authorization>
<allow users="*" />
</authorization>
它有效。因此授权过程中有一些事情不允许我处理.jpg请求。是的,我在该应用程序中进行了身份验证,如果我尝试请求.jpg,它仍然会失败。
希望这可以解决,以证明您的处理程序正常工作,但为此你需要有一个重大的安全问题......