我在 web.config 文件中设置了一个 HTTP 处理程序:
<add verb="*" path="*_*.aspx" type="SeoHandler"/>
并且在我网站的根目录中有一个文件 SeoHandler.ashx,它指向 App_Code 文件夹中的 SeoHandler.ashx.cs(该网站不是 Web 应用程序项目)。
当我在本地运行网站并输入“dork_test.aspx”之类的 URL 时,请求将被重定向到处理程序,然后由它处理业务。
但是当编译站点在我的域上运行时,“dork_test.aspx”将导致:
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /dork_test.aspx
为什么 SeoHandler 会在本地捕获“dork_test.aspx”请求而不是在服务器上?
不确定这是否重要,但是当我在我的域中访问 URL SeoHandler.ashx 时,处理程序会像预期的那样工作。
Web 主机是否有一些 IIS 设置忽略了我在 <httpHandlers>
中的输入? ?
最佳答案
检查未设置 .NET 处理程序的服务器上的 IIS,以验证请求的路径实际存在:
- 转到网站或虚拟目录的属性
- 主目录选项卡
- 点击下方的“配置”
- 找到 .ASPX 的扩展名并单击编辑,有一个复选框显示“验证该文件存在”。
如果选中该复选框,.NET 将不会为任何未映射到同一位置的物理文件的请求提供服务。
关于c# - HTTP 处理程序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548366/