在ASP.NET应用程序中管理维护页面重定向

And*_*dry 3 asp.net redirect web-config global-asax

我想在.config文件中使用这样的配置:

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

因此,当设置设置为false值时,系统会自动将每个请求重定向到维护页面.

我尝试这样做:使用Global.asax的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"]);
}
Run Code Online (Sandbox Code Playgroud)

基本上它可以工作,但是当以这种方式重定向时,firefox将向我显示没有应用任何图像或样式的页面...这很奇怪,我查看浏览器下载的页面源,一切都在那里!

这是实现我的目标的正确方法吗?我做错了吗?

谢谢

PS:Internet Explorer的行为与firefox不同,它正确地显示了重定向的页面.

PS2:你们正确地告诉我一个名为App_Offline的功能可用.好吧,我不想使用它有一个原因:我想使用我的维护页面不仅显示一个状态,还有更多状态,例如:

1)维持

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=Maintainance"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

2)正在建设中

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=UnderConstr"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

3)暂时不活动

<appSettings>
  <add key="SiteIsActive" value="false"/>
  <add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx?S=TempInact"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

App_Offline不会给我这个.

Kev*_*Kev 7

有一个更简单的方法,它使用一个特殊的页面调用App_Offline.htm.

欲获得更多信息:

App_Offline.htm - Scott Guthrie撰写

您可能还想阅读Scott关于IE6问题的跟进:

App_Offline.htm并解决"IE Friendly Errors"功能

在不使用时,只需将其重命名为App_offline.disabled当需要进行维护时将其重命名为App_Offline.htm.

这种方法的另一个理由是,如果您的"维护"包括部署网站或编辑您web.configUnderMaintainance.aspx网页,您的网页可能无法执行,因为您的网站在上传时会处于不稳定状态.或者,您可能犯了一个错误并覆盖了您的"维护"值web.config.

App_Offline.htm 是伟大的,因为这意味着你可以真正搞乱你的部署,没有人会知道.