3

我在 MVC4 的 RouteConfig.cs 中编写了 Route。它在 HTTP 上运行良好;IE:

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

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

4

2 回答 2

2

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

但是,如果您不想在您的服务器上强制使用 Https,Action而只要求Route将仅匹配 Https 请求,请尝试添加RouteConstraint如下:

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

然后:

routes.MapRoute("SecuredPlaceOrder",
        "/PlaceOrderSecured",
        new { controller = "Orders", action = "PlaceOrder" },
        new { requireSSL = new RequireHttpsConstraint() }
    );
于 2013-07-03T14:49:47.757 回答
1

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

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

于 2013-07-03T14:38:31.190 回答