你的代碼是正確的,並應置於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)項目測試這一點,並能得到路由按照指定的工作。
哇,非常感謝。如果你住在亨廷頓海灘加州附近,讓我給你買一杯飲料。 – masteroleary 2012-01-15 22:29:28
哈哈,很高興我能幫忙! – rsbarro 2012-01-16 15:10:03
如果您在夏洛特北卡羅萊納附近的任何地方 - 飲料都在我身上! – NTDLS 2012-01-31 03:36:28