我正在设法掌握MVC中的属性路由。
最初,我的sitemap控制器的路由如下:
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中设置)指定映射,当这两个位置相互矛盾时会发生什么?发布于 2018-11-26 01:36:00
如果删除扩展.xml,则属性路由将完美地工作。在实际工作中使用扩展相关代码比较好。
还要确保您的路由配置看起来类似(routes.MapMvcAttributeRoutes();应该存在于默认路由之前)
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
);https://stackoverflow.com/questions/53462409
复制相似问题