我正在尝试在 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();
从 OnActionExecuting 的 ActionFilter 仍然受到普通 503“服务不可用”页面的欢迎
这是否与 Azure 上的 application.config 锁定某些我不知道的东西有关。这在 IIS7 和我的本地机器上运行良好,但模拟器和云都没有带来任何乐趣。
任何帮助,将不胜感激。