繁体   English   中英

IIS 6 ASP.NET处理程序404错误

[英]IIS 6 ASP.NET handler 404 error

我有一个在Windows Server 2003(x86)上运行的IIS6,并编写了一个自定义处理程序(不是404错误的处理程序)。

当我尝试通过在浏览器中打开http://localhost/Priority1.Sync/Transfer.p1s访问处理程序时,出现错误404(日志文件中为404 0)。 Web应用程序中的其他页面正常工作,例如http://localhost/priority1.sync/syncservice.asmx

该处理程序在我的IIS7开发机上可以正常工作。

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" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*.p1s" type="MCS.Priority1.Sync.WebServices.TransferHandler, SyncService" />
</httpHandlers>

我已经为“ * .p1s”设置了应用程序扩展名(默认网站>属性>主目录>配置>映射>添加)。

我还有其他东西吗?

谢谢,安迪

是否在自定义处理程序IIS配置中选中了“验证文件是否存在”选项?

IIS6期望默认情况下存在一个物理文件。 如果没有,它将完全不会将请求传递给您的处理程序。 您需要禁用此检查,因此它将按预期将请求发送到您的处理程序。

IIS6和IIS7是根本不同的野兽。 IIS7的托管管道意味着每个请求都将到达您注册的处理程序,在IIS6中,仅处理映射到ASPNET_ISAPI.DLL(通常为* .aspx和* .ashx以及其他默认ASP.NET扩展名)的内容。

通过为该项目的开发应用程序池使用“经典”管道,可以使IIS7开发箱具有这种行为。

使它按预期运行的另一个技巧是将404错误映射到ASP.NET页,然后至少可以进入处理程序。

老实说,我希望将生产升级到IIS7,因为它的功能强大得多,甚至都不是很有趣。

如果要为IIS 6注册处理,那么请记住它们应该被放置在<httpHandlers>的元素<system.web>在web.config不是第<system.webServer>该IIS7使用部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM