我想在.config文件中使用这样的配置:
<appSettings>
<add key="SiteIsActive" value="false"/>
<add key="SiteNonActive_RedirectTo" value="UnderMaintainance.aspx"/>
</appSettings>
因此,当设置设置为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"]);
}
基本上它可以工作,但是当以这种方式重定向时,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>
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不会给我这个。
答案 0 :(得分:7)
这是一种更简单的方法,它使用了一个名为App_Offline.htm
的特殊页面。
了解更多信息:
您可能还想阅读Scott关于IE6问题的跟进:
App_Offline.htm and working around the "IE Friendly Errors" feature
不使用时只需将其重命名为App_offline.disabled
,然后在需要维护时将其重命名为App_Offline.htm
。
这种方法的另一个理由是,如果你的&#34;维护&#34;包括部署网站或修改web.config
,您的UnderMaintainance.aspx
页面可能无法执行,因为您的网站在上传时会处于不稳定状态。或者,您可能犯了一个错误并覆盖了这些&#34;维护&#34; web.config
中的值。
App_Offline.htm
非常棒,因为这意味着你可以真正搞砸你的部署,没有人会知道。