2013-05-21 59 views
1

我有一個普通的webforms項目(非MVC),我成功實現了MapPageRoute和RedirectToRoute場景。頁面路由由數據庫查找完成,因爲我正在翻譯查詢字符串(例如?filter = 112到/ my-friendly-url)。它在運行VWD 2010 Express的開發計算機和附帶的ASP.NET開發服務器上運行良好。 ASP.NET版本是4.0.30319.272。但是,當我在生產(iis7)框上運行項目時,在映射的頁面上找不到頁面錯誤。其餘的網站/網頁運行良好。我的直覺是,頁面處理是問題的根源,但我無法確定它是什麼或爲什麼。它可能與iis7如何處理目錄與文件名以及我的程序將物理.aspx路由到目錄樣式名稱可能產生的干擾有關。我的iis7 & web.config知識在這方面有點弱。爲什麼MapPageRoute/RedirectToRoute在開發機器上工作,但不在生產服務器上工作?

這裏我的Global.asax的摘錄:

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     RegisterRoutes(RouteTable.Routes); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.Clear(); 
     routes.RouteExistingFiles = false; 
     routes.Ignore("{resource}.axd/{*pathInfo}"); //ignore axd files, prevents javascript/routing collisions 
     routes.MapPageRoute("Education", "{category}/{section}", "~/product/education/default.aspx"); 
     routes.MapPageRoute("EducationLanding", "{category}", "~/product/education/default.aspx"); 
    } 

Web.config文件:提前

<handlers> 
    <remove name="StaticFile" /> 
    <remove name="PageHandlerFactory-Integrated-4.0" /> 
    <add verb="*" path="ajax/*.ashx" name="Ajax" type="Ajax.PageHandlerFactory, Ajax" /> 
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" /> 
    <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> 
    </handlers> 

由於處理程序部分, 約翰

回答

2

展望頁面處理導致我到web.config的modules部分,我在SO(IIS 7 ignores MapPageRoute without file extentions)上找到了我的答案。爲什麼我沒有在我以前的所有搜索中找到這個,我不知道。看哪:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
</system.webServer> 

謝謝@Christoph

相關問題