HTTPS - Mvc3 - Visual Studio 2010

时间:2012-03-19 21:43:17

标签: asp.net-mvc-3 https

我有一个要求,即网站需要以https模式打开(除了本地开发)。这是内部应用程序。

当我使用web.config条目将网站运行为真为https时,看起来该网站进入循环运动并一次又一次地重复该请求。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());

        //make sure that the remote site opens in https mode.
        bool isSSL = false;
        bool.TryParse(ConfigurationManager.AppSettings[ApplicationKeys.IsSSLRequired], out isSSL);
        if (isSSL && !HttpContext.Current.Request.IsLocal && !HttpContext.Current.Request.IsSecureConnection)
            filters.Add(new RequireHttpsAttribute());

    }
protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
        //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);

        //wire up Unity IoC
        container = new UnityContainer();
        UnityBootstrapper.ConfigureContainer(container);
        EntityMapper.MapEntities();
        DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        //wire up Unity Controller Factory
        ControllerBuilder.Current.SetControllerFactory(new UnityControllerFactory());
    }

我在这里缺少什么?

4 个答案:

答案 0 :(得分:2)

您可以使用支持SSL的IIS Express来托管您的网站。

答案 1 :(得分:2)

由于您已经在利用web.config来推动此功能,我建议您使用URL Rewrite

您可以设置规则以将非HTTPS流量重定向到HTTPS。有关配置,请参阅此主题:

http://forums.iis.net/t/1149780.aspx

有了这些,您可以利用web.config transformations在部署到生产环境时启用规则,从而进一步改善开发体验。

答案 2 :(得分:0)

在你的Global.asax中:

protected void Application_BeginRequest()
{
    bool isSSL = false;
    bool.TryParse(ConfigurationManager.AppSettings[ApplicationKeys.IsSSLRequired], out isSSL);
    if (isSSL && !Context.Request.IsSecureConnection)
        Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}

答案 3 :(得分:0)

只是一个想法。在Application_Start()?

中是否可以使用HttpContext.Current.Request