2011-08-24 4 views
2

ASP.Net 응용 프로그램의 경우 잠시 동안 SSL 페이지 코드로 리디렉션하는 데 어려움을 겪고 있습니다. 나는 여전히 좋은 해결책을 찾지 못했습니다. 문제는 디버깅이나 코딩 할 때 localhost에있는 경우 코드를 비활성화하려는 것입니다.하지만 작동하도록 설정할 수는 없습니다. 또 다른 문제는 다른 URL로 리디렉션해야하므로 http://www.xx.comhttps://Secure.xxx.com으로 리디렉션되어야합니다. 어떤 아이디어?ASP.Net의 SSL 페이지 리디렉션 코드를 작성하는 가장 좋은 방법은 무엇입니까

+0

시도 [http://stackoverflow.com/questions/47089/best-way-in-asp-net-to-force-https-for-an-entire-site][1] [1] : http://stackoverflow.com/questions/47089/best-way-in-asp-net-to-force-https-for-an-entire-site – kervin

답변

5

페이지 수준에서 ssl 속성을 설정하려면 custom attribute을 만들어야합니다. 이 attribute가 설정되어있는 경우

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] 
public sealed class HttpsAttribute : Attribute{} 

[HttpsAttribute] 
public partial class PageSecured: YourCustomBasePage {} 

이제 기본 페이지 YourCustomBasePage을 확인할 수 있습니다

protected override void OnInit(EventArgs e){ 
    if(!Request.IsSecureConnection){ 
     HttpsAttribute secureAttribute = (HttpsAttribute)Attribute.GetCustomAttribute(GetType(), typeof(HttpsAttribute)); 
     if(secureAttribute != null){ 
     //Build your https://Secure.xxx.com url 
     UriBuilder httpsUrl = new UriBuilder(Request.Url){Scheme = Uri.UriSchemeHttps, Port = 443}; 
     Response.Redirect(httpsUrl.Uri.ToString()); 
     } 
    } 
} 

HTTPS 리디렉션에서 로컬 컴퓨터를 제외하려면, 당신은 당신의 web.config의 설정 값을 사용할 수 있습니다.

private bool HTTPSEnabled{ 
    get{ return ConfigurationManager.AppSettings["HTTPSEnabled"] == null || Boolean.Parse(ConfigurationManager.AppSettings["HTTPSEnabled"]); } 
} 

는 당신은 내가 생산에 this 라이브러리를 사용하는 첫 번째 조건

if(!Request.IsSecureConnection && HTTPSEnabled) 
1

에 체크를 추가합니다. 나는 그것이 속성을 설정하는 것을 선호한다. 왜냐하면 그것은 구성에 기반하고, 훌륭한 수준으로 구성 가능하기 때문이다. 즉, 하위 도메인으로 리디렉션 할 수 있는지 확실하지 않습니다. 나는 왜 그런 일이 일어나기를 바랄지조차 모릅니다.

관련 문제