2010-03-23 73 views
4
<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错误。为什么?处理程序在IIS7.5集成管道上返回404错误

回答

10

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

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

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

+1

谢谢!你的答案帮助我在msdn上找到这篇文章http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx提供我需要的所有信息! – 2010-04-15 06:40:09

+0

我*认为*如果您使用IIS 6和IIS 7 ...(这可能是经典模式和集成模式之间的隐含差异),则需要将这些处理程序添加到两个部分中? – 2011-09-13 18:33:47

1

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

1

我最近将客户端网站从旧的IIS6移到IIS7安装。当他们调用.axd时,他们也在应用程序中运行404。他们的网站设置为.net 2,权限正确,处理程序都很好看。最终将其应用程序池从“管理流水线模式”集成到Classic,从而解决了应用程序的问题。

0

尝试了很多选项后,他们没有解决问题。但是,这工作。在您的Appstart文件夹中,在routeconfig.cs中添加以下代码routes.IgnoreRoute(“{resource} .axd/{* pathInfo}”),如下所示。

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