2010-03-23 38 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}"); 
}