HTTPS - Mvc3 - Visual Studio 2010 - PullRequest
       0

HTTPS - Mvc3 - Visual Studio 2010

3 голосов
/ 20 марта 2012

У меня есть требование, когда сайт должен всегда открываться в режиме https (кроме локальной разработки).Это внутреннее приложение.

Когда я запускаю сайт с записью web.config, равной true для 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 ]

2 голосов
/ 20 марта 2012

Поскольку вы уже используете web.config для управления этой функциональностью, я бы предложил использовать URL Rewrite .

. Вы можете настроить правило для перенаправления трафика не-HTTPS.к HTTPS.См. Эту ветку для конфигурации:

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

Имея это, вы можете еще больше улучшить свой опыт разработки, используя преобразования web.config , чтобы включить правилопри развертывании в производственной среде.

2 голосов
/ 20 марта 2012

Вы можете использовать IIS Express , который поддерживает SSL для размещения вашего сайта.

0 голосов
/ 20 марта 2012

Просто мысль.Доступен ли HttpContext.Current.Request в Application_Start ()?

0 голосов
/ 20 марта 2012

В вашем 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:"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...