2012-03-19 1 views
3

사이트가 https 모드 (로컬 개발 제외)로 항상 열어야하는 요구 사항이 있습니다. 내부 앱입니다.HTTPS - Mvc3 - Visual Studio 2010

web.config 항목을 https에 대해 true로 실행하면 사이트가 원을 그리며 요청을 계속 반복하는 것처럼 보입니다.

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()); 
    } 

무엇이 여기에 있습니까?

답변

2

이미이 기능을 사용하기 위해 web.config를 사용하고 있으므로 URL Rewrite을 사용하는 것이 좋습니다.

비 HTTPS 트래픽을 HTTPS로 리디렉션하는 규칙을 설정할 수 있습니다. 구성이 스레드를 참조하십시오 : 그와

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

을 장소에서, 당신은 더 프로덕션 환경에 배포 할 때 규칙을 사용하는 web.config transformations을 활용하여 개발 경험을 향상시킬 수 있습니다. 당신의 Global.asax에서

+0

전역 파일에서 코드를 제거하고 web.config에서 규칙을 만들었습니다. http를 사용할 때 "페이지가 제대로 리디렉션되지 않습니다"라는 오류 메시지가 나타납니다. 여기에 규칙입니다 : < "(. *)"일치 URL = /> <규칙 이름 = "HTTPS로 리디렉션"> <= 입력을 추가 "{SERVER_PORT}"패턴 = "443 "부정 ="진정한 "/> <작업 유형은 =" "URL ="http://dev.domain.com/Study/{R:1} "/>

+0

나 '리디렉션 HTTPS로 리디렉션하도록 지정하지 않았기 때문에 무한 리디렉션 루프에 있다고 생각합니다. url 속성은 귀하가 귀하의 의견에 입력 한 내용을 통해 "https://dev.domain.com/Study{R:1}"과 유사해야합니다. –

+0

그래서 https://dev.domain.com/Study/ {R : 1}이되어야합니다 ??? –

2

SSL을 지원하여 사이트를 호스팅하는 IIS Express을 사용할 수 있습니다.

0

:

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:")); 
} 
+0

페이지가 제대로 리디렉션되지 않습니다. 오류가 발생했습니다. 그냥 내 것처럼. –

0

그냥 생각. Application_Start()에서 HttpContext.Current.Request를 사용할 수 있습니까?