如何在mvc 4中编写HTTPS路由

时间:2013-07-03 14:36:14

标签: asp.net-mvc-4

我已经在MVC4中的RouteConfig.cs中编写了Route。它可以正常使用HTTP;即:

routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Default", id = UrlParameter.Optional }
);

如何创建HTTPS路由以便某些页面可以在HTTPS上打开,而某些页面可以在HTTP上打开?

2 个答案:

答案 0 :(得分:2)

正如@SLaks建议的那样,您可以使用Action属性修饰[RequireHttps]

但是,如果您不想在Action上强制使用Https,但只要求 Route 仅匹配Https请求,请尝试添加{{} 1}}如下:

RouteConstraint

然后:

public class RequireHttpsConstraint : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return httpContext.Request.IsSecureConnection;
    }
}

答案 1 :(得分:1)

MVC路由仅匹配URL的路径部分 它们完全独立于主机或协议。

如果您想将某些网址限制为仅限HTTPS,请将[RequireHttps]属性添加到控制器或操作中。