Как создать правильную страницу обслуживания 503 в MVC? - PullRequest
0 голосов
/ 08 марта 2012

Я хочу создать правильную страницу обслуживания для моего сайта в MVC.Я хочу, чтобы он возвращал код состояния 503, поэтому Google вернется, чтобы проиндексировать его позже.

Пока что я создал ActionFilter, который проверяет, является ли «MaintenanceMode» ИСТИНА в web.config.Если это так (а мы еще не идем на страницу обслуживания), он выполняет простое перенаправление в ~ / Maintenance /.Могу ли я сделать что-то, чтобы 503 возвращалось во время всего этого, или это невозможно?

Просто добавлю, у меня есть параметр секретной строки запроса, который можно ввести, и он создает файл cookie на 40 минут, которыйобходит экран обслуживания.Просто упомянув об этом, если вам интересно, почему у меня этот экран для начала ...

ОБНОВЛЕНО:

Я не могу понять, как вернуть код состояния 503 со страницеймой выбор (страница «Вернись!») ... но я знаю, как вернуть 503 с уродливой версией:

filterContext.HttpContext.Response.StatusCode = 503;
filterContext.Result = new HttpStatusCodeResult(503);

Я мог бы пойти с этим сейчас.Если кто-то может подтвердить, что я здесь правильно думаю ...

1 Ответ

0 голосов
/ 08 марта 2012

Хорошо, похоже, я понял это сам.Я пошел по этому пути неправильно ...

Я пытался создать дружественную страницу 503 в контексте инфраструктуры MVC.Вместо этого я просто создал файл 503.htm и поместил его в корень.Затем я настроил IIS (на моем хостинге) для перенаправления ошибки 503 на 503.htm.

Когда мой веб-сайт работает и находится в режиме обслуживания, у меня есть фильтр действий, который делает это:

filterContext.Result = new HttpStatusCodeResult(503);

Но прежде чем перейти туда, я проверяю, была ли введена "секретная" строка запроса,Если это так, я создаю файл cookie для обслуживания в течение 40 минут и позволяю пользователю обойти 503, чтобы он мог протестировать / поиграть с сайтом.

Таким образом, я получил страницу обслуживания 503, все еще имея возможностьпротестируйте сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...