2009-07-30 3 views
1

좋아, 그래서 내 ASP.NET MVC 사이트의 일부에 https/ssl을 강제하고 싶다. 여기에 ActionFilter를 포함한 많은 훌륭한 소스가 있습니다. http://blog.tylergarlick.com/index.php/2009/07/mvc-redirect-to-http-and-https/HttpContext.Request.Url이 주소 표시 줄의 내용과 일치하지 않는 이유는 무엇입니까?

ActionFilter를 사용할 때마다 리디렉션 루프가 끝납니다. 문제는 주소 표시 줄에 https : //www.mysite.com/을 입력하면 request.url은 항상 http : //www.mysite.com/과 같습니다.

조치 필터의 코드는 아래에 있으며, URL을 다시 작성, 리디렉션, 사용자 정의 라우팅 또는 표준 설정 이상으로 수정하지는 않습니다. 이것이 일어날 수있는 일반적인/흔치 않은 이유 및/또는 해결 방법이나 수정 사항이 있습니까? 이 사이트는 현재 NetworkSolutions에서 호스팅되고 있습니다 - IIS 구성과 관련된 가능성이 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다.

public class RedirectToHttps : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // Helpers just so I don’t have to type so much 
     var request = filterContext.HttpContext.Request; 
     var response = filterContext.HttpContext.Response; 

     // Make sure we’re in https or local 
     if (!request.IsSecureConnection && !request.IsLocal) 
     { 
      string redirectUrl = request.Url.ToString().Replace("http:", "https:"); 
      response.Redirect(redirectUrl); 
     } 

     base.OnActionExecuting(filterContext); 
    } 
} 
+0

으로 원래 URL을 검색 할 수도 있습니다. MVC 미래의 RequireSSL 속성을 사용하여 동일한 리디렉션 루프가 발생했습니다. –

답변

3

명시 적 URL 재 작성을 수행하지 않더라도 ASP.NET MVC 엔진에서 수행합니다. HttpContext.Request.RawUrl

+0

제 질문에 답변 해 주셔서 감사합니다. RawUrl은 상대 경로, 예를 들어 /default.aspx만을 제공하는 것 같습니다. 이게 정상인가? –

+0

원본 URL이 포함되어 있다고 생각했지만 설명서에 따르면 : "원시 URL은 도메인 정보 다음에 오는 URL의 일부로 정의됩니다". 죄송합니다... –

관련 문제