У меня есть общественный сайт (связанный с Банком), который должен быть обновлен PROD в ближайшие недели. Мне нужно отобразить страницу «Вниз для обслуживания» во время окна отключения. Поскольку банк предоставил мне определенные требования к странице, которая должна быть оформлена точно так же, как сам веб-сайт, я не думаю, что решение app_offline.htm будет работать для меня, поскольку я не смогу получить доступ к моим таблицам стилей и изображениям, потому что IIS перенаправляет все запросы на эту страницу.Веб-сайт Лучшая практика «Вниз для обслуживания»
Мне было интересно, какой был бы лучший дизайн решения, чтобы я мог использовать стили и изображения на своем веб-сайте на моей странице обслуживания? Мне сказали, что хороший способ сделать это - создать новый веб-сайт, включить стиль и изображения и развернуть его как отдельный веб-сайт в IIS <, а затем во время окна отключения я переключу привязку IP-адреса в IIS, чтобы указать на мой сайт обслуживания. По завершении технического обслуживания я переключу его обратно на основной сайт. Это хороший способ сделать это?
UPDATE:
Я осуществил следующее, и это, кажется, работает очень хорошо. Когда я отбрасываю файл Outage.htm или Maintenance.htm в свою веб-корневую папку, он будет перенаправлять соответственно. Отключение и плановое обслуживание имеют разные стили и содержание, поэтому мне пришлось создать 2 страницы. Кроме того, когда в режиме отключения или обслуживания и запрос поступает с localhost, то не перенаправляйте, чтобы разрешить тестирование веб-сайта после выполнения технического обслуживания при блокировке внешних запросов.
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CheckForDownPage());
}
}
public sealed class CheckForDownPage : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string ipAddress = HttpContext.Current.Request.UserHostAddress;
var outagePage = System.Web.Hosting.HostingEnvironment.MapPath("~/Outage.htm");
var maintenancePage = System.Web.Hosting.HostingEnvironment.MapPath("~/Maintenance.htm");
var isOutage = System.IO.File.Exists(outagePage);
var isMaintenance = System.IO.File.Exists(maintenancePage);
if ((isOutage || isMaintenance) && ipAddress != "::1")
{
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
filterContext.HttpContext.Response.StatusDescription = "Service Unavailable.";
filterContext.HttpContext.Response.WriteFile(isOutage ? outagePage : maintenancePage);
filterContext.HttpContext.Response.End();
return;
}
base.OnActionExecuting(filterContext);
}
}
Как вы развертываете свое приложение? Вы заботитесь о текущем состоянии сеанса/пользователя во время развертывания? Сколько времени займет ваше развертывание? Кроме того, вы должны иметь возможность загрузить css на странице app_offline.htm. –
Я не забочусь о сеансах и т. Д. Весь трафик на сайт будет заблокирован до выхода в автономный режим. – FaNIX