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不会给我这个.
有一个更简单的方法,它使用一个特殊的页面调用App_Offline.htm.
欲获得更多信息:
您可能还想阅读Scott关于IE6问题的跟进:
在不使用时,只需将其重命名为App_offline.disabled当需要进行维护时将其重命名为App_Offline.htm.
这种方法的另一个理由是,如果您的"维护"包括部署网站或编辑您web.config的UnderMaintainance.aspx网页,您的网页可能无法执行,因为您的网站在上传时会处于不稳定状态.或者,您可能犯了一个错误并覆盖了您的"维护"值web.config.
App_Offline.htm 是伟大的,因为这意味着你可以真正搞乱你的部署,没有人会知道.
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |