接続法 ASP.NET 2 MVCワーカーロールアプリケーションがあります。これは、デフォルトのテンプレートとそれほど変わりません。
HTTPからHTTPSへのリダイレクトを試みると(これは、通常のRequireSSL属性の実装によって保護されたコントローラーにアクセスするときに発生します)、「BadRequest」メッセージを含む空白のページが表示されます。
IntelliTraceはこれを示しています:
スロー:「ファイル'/Views/Home/LogOnUserControl.aspx'は存在しません。」(System.Web.HttpException)
コールスタックは本当に短いです:
[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にある通常のリファレンスです。
<div id="logindisplay">
<% Html.RenderPartial("LogOnUserControl"); %>
</div>
また、部分ビューLogOnUserControl.ashxはViews / Sharedにあります(ASPXではなくASCXです)。
SSLのために認証(FormsAuth)とリダイレクトを必要とするサイトページにアクセスしようとすると、問題が発生します。これらのページは、RequireSSL属性(リダイレクト== 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でコンパイルします。
誰かが何か考えを持っていますか、この奇妙な例外を引き起こす可能性のあるものとそれを取り除く方法はありますか?