2012-01-13 36 views
4

當搜索google時,爲MVC網站提供的唯一解決方案。我的asp.net 4.0網站不是MVC。我想請求sitemap.xml加載另一個動態.aspx頁面,以便我可以即時生成Google鏈接。無法解決如何將我的NON-MVC網站從sitemap.xml路由到另一個.aspx頁面

我花了幾個小時尋找,如果你知道我在哪裏可以找到答案,請告訴我。

我已經嘗試使用

RouteTable.Routes.Add("SitemapRoute", new Route("sitemap.xml", new PageRouteHandler("~/sitemap.aspx"))) 

回答

6

你的代碼是正確的,並應置於Application_Start方法Global.asax。例如:

void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.Add(new Route(
     "sitemap.xml", new PageRouteHandler("~/sitemap.aspx"))); 
} 

但是,您還需要確保* .xml文件由ASP.NET處理。默認情況下,* .xml文件只能由IIS提供,不能由ASP.NET處理。爲了確保它們是由ASP.NET處理,您可以:

1)在你的web.config指定system.webServer元素runAllManagedModulesForAllRequests="true"

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

或2)添加一個 「處理程序映射」 的.xml文件:

<system.webServer> 
    <handlers> 
     <add name="xml-file-handler" path="*.xml" type="System.Web.UI.PageHandlerFactory" 
      verb="*" /> 
    </handlers> 
    </system.webServer> 

我在一個示例ASP.NET(非MVC)項目測試這一點,並能得到路由按照指定的工作。

+0

哇,非常感謝。如果你住在亨廷頓海灘加州附近,讓我給你買一杯飲料。 – masteroleary 2012-01-15 22:29:28

+0

哈哈,很高興我能幫忙! – rsbarro 2012-01-16 15:10:03

+0

如果您在夏洛特北卡羅萊納附近的任何地方 - 飲料都在我身上! – NTDLS 2012-01-31 03:36:28

相關問題