我正在尝试处理MVC中的属性路由。
最初,我的站点地图控制器的路由如下:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "SitemapXml",
url: "sitemap.xml",
defaults: new { controller = "Sitemap", action = "Index" }
// Additional mappings...
}
}
那很好。但是后来我尝试注释掉上面的SitemapXml
路由,并在控制器中添加了一个属性。
// GET: Sitemap
[Route("sitemap.xml")]
public ActionResult Index()
{
// Generate sitemap
}
我还在RegisterRoutes
的末尾添加了以下行:
routes.MapMvcAttributeRoutes();
但是现在当我导航到domain.com/sitemap.xml时,出现页面未找到错误。
问题:
RouteCollection
中设置),那么当这两个地方相互矛盾时会发生什么?答案 0 :(得分:0)
如果删除扩展名.xml,则属性路由将正常运行。并且最好在操作方法中使用与扩展相关的代码。
还要确保您的路由配置看起来像(routes.MapMvcAttributeRoutes();应在默认路由之前存在)
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
);