Asp.net mvc 如何为ASP.NET MVC站点的主页设置路由?

Asp.net mvc 如何为ASP.NET MVC站点的主页设置路由?,asp.net-mvc,routing,Asp.net Mvc,Routing,我正在与一个ASP.NETMVC网站合作,该网站将使用CMS控制器处理除主页以外的所有页面。我的想法是: 主控台: www.site.com www.site.com/default.aspx CMS控制器: www.site.com/about www.site.com/agenda/schedule www.site.com/monkey/eats/spaghetti (几乎是其他任何东西) 列出有关如何设置默认页面路由的一些选项: 将Default.aspx保留为未路由和未定向的应

我正在与一个ASP.NETMVC网站合作,该网站将使用CMS控制器处理除主页以外的所有页面。我的想法是:

主控台:

  • www.site.com
  • www.site.com/default.aspx
CMS控制器:

  • www.site.com/about
  • www.site.com/agenda/schedule
  • www.site.com/monkey/eats/spaghetti
  • (几乎是其他任何东西)
列出有关如何设置默认页面路由的一些选项:

  • 将Default.aspx保留为未路由和未定向的应用程序入口点-使用静态链接将用户带入应用程序的MVC部分(或其他静态内容)
  • 在代码隐藏中重定向Default.aspx,可以使用Page_Load事件处理程序代码,也可以使用Response.Redirect(~/home))将它们发送到主控制器(尽管这是一个往返重定向)
  • 重命名或删除Default.aspx。尽管标记中警告说,当用户发出“/”请求时,需要default.aspx来确保IIS激活ASP.NET MVC。。。在VS dev服务器或IIS7中实际上都不需要它。默认请求将保持为应用程序根请求“/”,并将被默认路由捕获并发送到主控制器
  • 我想另一种选择是只使用一个控制器,它带有一些逻辑来检测主页案例,但这似乎与这个概念相悖


    您建议如何为站点主页设置特定的路由?

    如果在IIS7集成模式下托管,我建议取消default.aspx。据我所知,只有在IIS6和IIS7经典模式下激活才有必要

    www.site.com可以通过根映射路由进行处理

    routes.MapRoute(
        "Root",
        "",
        new { controller = "Home", action = "Index", id = "" }
    );
    
    将以下内容放入Default.aspx的页面加载中

    HttpContext.Current.RewritePath(Request.ApplicationPath, false);
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
    
    这会将请求重写为root,并由上面的映射路由处理

    顺便说一句,您实际上可以从MVC模板项目中找到代码。

    我认为选项1最简单。我可能会坚持下去,直到找到一个强有力的理由搬家或找到另一个选择。默认模板使用这种方法

    [更新]坎顿击败我