Subj. ASP.NET 2 MVC 작업자 역할 응용 프로그램이 있는데 기본 템플릿과 많이 다르지 않습니다.HTTP에서 HTTPS로 리디렉션 할 때 Windows Azure ASP.NET MVC 역할이 이상하게 작동합니다.
HTTP에서 HTTPS로 리디렉션하려고 할 때 (일반적인 RequireSSL 속성 구현으로 보안되는 constroller에 액세스 할 때 발생 함) "잘못된 요청"메시지가 표시된 빈 페이지가 표시됩니다. 슬로우
:
IntelliTrace이 표시됩니다. "파일 '/Views/Home/LogOnUserControl.aspx이'이 (가) 없습니다" (System.Web.HttpException)
콜 스택은 정말 짧은 :
<div id="logindisplay">
<% Html.RenderPartial("LogOnUserControl"); %>
</div>
:
[External Code]
App_Web_vfahw7gz.dll!ASP.views_shared_site_master.__Render__control1(System.Web.UI.HtmlTextWriter __w = {unknown}, System.Web.UI.Control parameterContainer = {unknown})
[External Code]
App_Web_bsbqxr44.dll!ASP.views_home_index_aspx.ProcessRequest(System.Web.HttpContext context = {unknown})
[External Code]
사용자 컨트롤 참조가 일 /Views/Shared/Site.Master에서 보통이다 그리고 부분 뷰 LogOnUserControl.ashx는 Views/Shared (ASPX가 아닌 ASCX)에 있습니다.
사이트 페이지에 액세스하려고 할 때 SSL ()으로 인해 인증 (FormsAuth) 및 리디렉션이 필요한 문제가 발생합니다. 이 페이지는 RequireSSL 속성 (Redirect == true)으로 보호됩니다.
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public sealed class RequireSslAttribute : FilterAttribute, IAuthorizationFilter
{
public bool Redirect { get; set; }
// Methods
public void OnAuthorization(AuthorizationContext filterContext)
{
// this get's messy, when we are running custom ports
// within the local dev fabric.
// hence we disable code in the debug
#if !DEBUG
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (filterContext.HttpContext.Request.IsSecureConnection)
return;
var canRedirect = string.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase);
if (canRedirect && Redirect)
{
var builder = new UriBuilder
{
Scheme = "https",
Host = filterContext.HttpContext.Request.Url.Host,
Path = filterContext.HttpContext.Request.RawUrl
};
filterContext.Result = new RedirectResult(builder.ToString());
}
else
{
throw new HttpException(0x193, "Access forbidden. The requested resource requires an SSL connection.");
}
#endif
}
}
분명히이 경우 RELEASE로 컴파일합니다.
아무도 어떤 생각을 갖고 있습니까?이 이상한 예외가 생길 수 있으며이를 제거하는 방법은 무엇입니까?
Mea culpa. 물론 부분 제어는 ASCX입니다. –
@RinatAbdullin 답이 맞다면 다음과 같이 표시하십시오 :) – jamiebarrow