MVC 3、特にAzureでカスタムメンテナンスページを設定しようとしています。基本的にそれをSEOフレンドリーに保つために、私は503(サービス利用不可)を返す必要があります。他のすべてのカスタムエラーページは、通常のAzure(404など)で機能します。
<customErrors mode="On">
<error statusCode="404" redirect="404.htm"/>
<error statusCode="503" redirect="503.htm"/>
</customErrors>
404ページは機能しますが、503がフォローされておらず、単に醜いサービスを利用できないページが表示されます。error.cshtmlと標準のHandleErrorAttributeを介して500エラーが正常に機能しています。
次を使用して、ActionFilterから自分のActionResultを返してみます。
public class SiteDownForTestingResult : ActionResult
{
public SiteDownForTestingResult() : base()
{
}
public override void ExecuteResult(ControllerContext context)
{
var path = System.Web.Hosting.HostingEnvironment.MapPath("~/app_testing.htm");
var response = context.HttpContext.Response;
response.Clear();
response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
response.StatusDescription = "Service Unavailable.";
response.WriteFile(path);
response.End();
}
}
app_testingは私のカスタムページであり、filterContext.Result = new SiteDownForTestingResult();
ActionFilterのOnActionExecutingから設定しても、プレーンな503「サービスを利用できません」ページが表示されます
これは、Azureのapplication.configが、私が知らない何かをロックしていることと関係がありますか?これはIIS7と私のローカルボックスでは問題なく機能しますが、エミュレーターとクラウドはどちらも喜びを与えません。
どんな助けでもいただければ幸いです。