处理程序在IIS7.5集成管道上返回404错误

时间:2010-03-23 09:30:52

标签: iis integrated-pipeline-mode

<httpHandlers>
  <add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
  <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
  <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" />
</httpHandlers>

我在集成模式下遇到iis7.5的问题。当我在经典模式处理程序中使用它时,上面提到的工作正常,但如果我切换到集成管道 - 所有应该处理的请求返回404错误。为什么呢?

4 个答案:

答案 0 :(得分:10)

我可能会离这里很远,因为我可能会远离IIS专家,但我遇到了你的问题,因为我在集成模式下遇到IIS7问题。我注意到的一件事是你正在使用httpHandlers部分,它位于system.web中。但是,我认为对于集成模式,您需要使用system.webServer部分:

<system.webServer>
   <handlers>
      <add... >
   </handlers>
</system.webServer>

希望有人知道他们在谈论什么会纠正我,如果我错了。

答案 1 :(得分:1)

Request Filtering部分我需要将.axd文件设置为允许的扩展名,我的托管公司已关闭设置Allow unlisted file name extensions,这与我的开发环境不同。

答案 2 :(得分:1)

我最近将客户端网站从旧的IIS6移动到IIS7安装。在调用.axd时,他们的应用程序运行到404s。他们的网站设置为.net 2,权限正确,处理程序看起来都很好。结束从#34;管理管道模式&#34;更改他们的应用程序池集成到Classic,这解决了它们的应用问题。

答案 3 :(得分:0)

在尝试了很多选项后,他们没有成功。但是,这很有效。在Appstart文件夹中,在routeconfig.cs中添加此代码routes.IgnoreRoute(“{resource} .axd / {* pathInfo}”),如下所示。

public static void RegisterRoutes(RouteCollection routes) {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}