【问题标题】:Handlers returns 404 error on IIS7.5 integrated pipeline处理程序在 IIS7.5 集成管道上返回 404 错误
【发布时间】:2010-03-23 09:30:51
【问题描述】:
<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 错误。为什么?

【问题讨论】:

    标签: iis integrated-pipeline-mode


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!您的回答帮助我在 msdn msdn.microsoft.com/en-us/library/46c5ddfy.aspx 上找到了这篇文章,其中包含我需要的所有信息!
    • 认为如果您使用 IIS 6 和 IIS 7,则需要将处理程序添加到这两个部分...(这可能是经典和集成之间的隐含差异模式?)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我最近将一个客户端网站从旧的 IIS6 移动到 IIS7 安装。在调用 .axd 时,他们的应用程序也遇到了 404。他们的站点设置为 .net 2,权限正确,处理程序看起来都不错。最终将他们的应用程序池从“托管管道模式”集成更改为经典,这解决了他们的应用程序问题。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-26
          • 2012-12-15
          • 2020-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-29
          • 1970-01-01
          相关资源
          最近更新 更多