Управление перенаправлением страницы сопровождения в приложении ASP.NET - PullRequest
3 голосов
/ 27 августа 2011

Я хотел бы использовать конфигурацию в файле .config следующим образом:

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx"/>
</appSettings>

Так что, когда для этого параметра установлено значение false, система автоматически перенаправляет КАЖДЫЙ ЗАПРОС на страницу обслуживания.

Я пытался сделать это следующим образом: используя Global_asax's Application_BeginRequest:

protected void Application_BeginRequest(object sender, EventArgs e) {
  if ((bool)System.Configuration.ConfigurationManager.AppSettings["SiteIsActive"])
    if (this.Request.Path.IndexOf(
       System.Configuration.ConfigurationManager.AppSettings["SiteNonActive_RedirectTo"]) == -1)
      this.Response.Redirect(
      System.Configuration.ConfigurationManager.AppSettings["SiteNonActive_RedirectTo"]);
}

В основном это работает, но при перенаправлении таким образом Firefox покажет мне страницу БЕЗ какого-либо изображения или стиля ... странно, я смотрю на исходный код страницы, загруженный браузером, и все есть!

Это правильный путь для достижения моей цели? Я делаю что-то не так?

Thankyou

PS: Internet Explorer не ведет себя как firefox, он правильно показывает перенаправленную страницу.

PS2: Ребята, вы правильно написали, что доступна функция App_Offline. Ну, я бы не хотел использовать его по одной причине: я хотел бы использовать свою страницу обслуживания не только для отображения одного статуса, но и нескольких статусов, например:

1) Техническое обслуживание

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=Maintainance"/>
</appSettings>

2) В процессе строительства

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=UnderConstr"/>
</appSettings>

3) Временная неактивность

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=TempInact"/>
</appSettings>

App_Offline не предлагает мне этого.

1 Ответ

7 голосов
/ 27 августа 2011

Существует гораздо более простой способ сделать это, и он использует специальную страницу под названием App_Offline.htm.

Для получения дополнительной информации:

App_Offline.htm - автор ScottГатри

Возможно, вы также захотите прочитать продолжение Скотта по поводу исправления ошибок с IE6:

App_Offline.htm и работа над "Функция IE Friendly Errors "

Если она не используется, просто переименуйте ее в что-то вроде App_offline.disabled, затем, когда вам нужно выполнить техническое обслуживание, переименуйте его обратно в App_Offline.htm.

Еще одним оправданием для этого подхода является то, что если ваше «обслуживание» включает в себя развертывание сайта или редактирование вашей web.config, ваша страница UnderMaintainance.aspx может не работать, поскольку ваш сайт будет изменяться во время загрузки,Или, возможно, вы допустили ошибку и перезаписали эти значения «обслуживания» в вашем web.config.

App_Offline.htm замечательно, потому что это означает, что вы действительно можете испортить свое развертывание, и никто не узнает.

...