我正在尝试编写HTTP GET处理程序。路径应以http://site/processTask
开头,并具有一组URL编码参数。我的web.config中有以下内容
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<add verb="GET" path="processTask*" type="MyHandler.ProcessTaskHandler, MyHandler"/>
</httpHandlers>
现在,当我在浏览器中输入网址http://mysite/processTask
时,我会获得HTTP 404,但如果我将add verb
行更改为以下内容:
<add verb="GET" path="processTask.asmx*" type="MyHandler.ProcessTaskHandler, MyHandler"/>
并在浏览器中输入http://mysite/ProcessTask.asmx
运行处理程序,我从处理程序获得响应。
有什么问题?为什么处理程序仅在路径包含.asmx
时运行?如何更改web.config
以便不需要.asmx
?
答案 0 :(得分:3)
当路径只是 / processTask (没有扩展名)IIS 首先无法理解它必须将请求传递给ASP.NET ,尤其是在IIS 5.1上,该文件不是由ASP.NET处理,而是仅从磁盘提供(并且没有这样的文件,因此HTTP 404)。
为了能够做到这一点,您需要设置IIS以使用ASP.NET
处理所有文件在IIS 5.1上,右键单击根目录,打开“网站属性”|主页目录|配置,并将*.aspx
(或已由ASP.NET处理的任何其他扩展)的设置复制/粘贴到.*
的新扩展,并取消选中&#34;验证文件存在&#34;复选框那里。 Here's a step-by-step guide针对类似问题。