Asp.net mvc 关于mvc中的路由

Asp.net mvc 关于mvc中的路由,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我在mvc3应用程序中有一个类似www.abc.com的url,我设置了一个默认的map.route,如下所示 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "UserLogOnPage", action = "LogOn", id = UrlParameter.Optional } // Param

我在mvc3应用程序中有一个类似www.abc.com的url,我设置了一个默认的map.route,如下所示

routes.MapRoute(
  "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "UserLogOnPage", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
);
现在,当我键入www.abc.com并输入它时,会发生什么情况:Controller:UserLogOnPage Method:Logon,在浏览器中,url也会显示www.abc.com,这是正确的,但是当输入像www.abc.com/UserLogOnPage/Logon这样的url时,我希望像www.abc.com这样的url不是www.abc.com/UserLogOnPage/Logon,我如何才能做到这一点


谢谢

我几乎可以肯定这并不是您真正想要做的-路由配置将导致任何URL被重定向到
登录
页面

从url上看,您所追求的实际上是身份验证,即,如果匿名用户访问
www.abc.com
,他们将被要求在访问该网站之前登录

幸运的是,MVC已经完成了艰苦的工作,您需要做的就是决定如何让它工作。可以在不同级别应用身份验证,范围由设置的位置决定

Global.asax-每个操作都需要身份验证

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    ...
    filters.Add(new AuthorizeAttribute());
}
控制器-特定控制器内的所有操作都需要身份验证

[Authorize]
public class AccountController : Controller
{
    ...
}
操作-仅此操作需要身份验证

[Authorize]
public ActionResult AccountDetails()
{
    ...
}
要确定由于
authorizationAttribute
而要将用户重定向到哪个页面,可以在
web.config
中配置
authorization
部分

<authentication mode="Forms">
    <forms loginUrl="~/UserLogOnPage/LogOn" />
</authentication>

您需要url映射才能在global.asax中将www.abc.com/UserLogOnPage/Logon重定向到www.abc.com