Я пытаюсь настроить пользовательскую страницу обслуживания в 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 не отслеживается, и я просто получаю уродливую страницу недоступности службы. У меня ошибка 500 работает нормально через error.cshtml и стандартный атрибут HandleErrorAttribute.
Я даже пытаюсь вернуть свой собственный ActionResult из ActionFilter, используя следующее
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 "сервис недоступен"
Это как-то связано с блокировкой application.config в Azure, о которой я не знаю. Это отлично работает на IIS7 и на моей локальной машине, но эмулятор и облако не доставляют удовольствия.
Любая помощь будет оценена по достоинству.