2011-02-07 68 views
0

我想添加一個路由,將所有sitemap.xml請求傳輸到我所做的自定義請求處理程序。轉移sitemap.xml HTTP請求到ASP.NET MVC中的路由處理程序

我用下面的代碼嘗試:

 routes.Add(new Route("sitemap.xml", new Helpers.SiteMapRouteHandler())); 
     routes.MapRoute(
      "Default",            
      "{controller}/{action}/{id}",       
      new { controller = "Home", action = "Index", id = "" } 
     ); 

但是當我提出用Url.Action()鏈接:

Url.Action("Index", new { controller = "About"}) 

我碰到下面當我嘗試導航到XML文件:

/sitemap.xml?action=Index&controller=About 

我在做什麼錯?

答:

我用這個解決方案:

Specifying exact path for my ASP.NET Http Handler

+0

你在哪裏有它在你的路由列表?它看起來很通用,所以它會匹配所有請求。你可能想用Phil Haack的Route Debugger來幫助你。 – 2011-02-07 15:58:42

回答

0

我不知道這是否會解決這個問題,但它是值得一試:

routes.Add(
    new Route(
     "{request}", 
     new RouteValueDictionary(new { id = "" }), // this might be the tricky part to change 
     new RouteValueDictionary(new { request = "sitemap.xml" }), 
     new Helpers.SiteMapRouteHandler() 
    )); 
+0

不,它不起作用。嘗試獲取/sitemap.xml時,我獲得HTTP 404 – Shay 2011-02-07 14:11:07

+0

希望我能得到更多幫助。只有其他的事情我可以想到的是嘗試設置兩個RVD到(新{request =「sitemap.xml」}) – ARM 2011-02-07 15:16:57

3

如果你想要的路線和行動,而不是一個請求處理程序

這裏提到您可以添加這樣

routes.MapRoute(
     "Sitemap", 
     "sitemap.xml", 
     new { controller = "Home", action = "SiteMap" } 
     ); 

路線 - MVC: How to route /sitemap.xml to an ActionResult?和它的工作對我來說

更新:還要確保已設置<modules runAllManagedModulesForAllRequests="true">