2011-08-27 2 views
3

나는이 같은 .config 파일에서 구성을 사용하고자하는 ASP.NET 응용 프로그램에서 리디렉션 : 그래서

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

, 설정이 잘못된 값으로 설정되면, 시스템은 자동으로 모든 요청을 유지 보수 페이지로 리디렉션합니다. 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"]); 
} 

은 기본적으로 작동을하지만,이 방법으로 리디렉션 할 때, 파이어 폭스가 적용된 이미지 나 스타일없이 나에게 페이지를 표시합니다. .. 이상하다, 나는 브라우저에 의해 다운로드 된 페이지 소스를보고 모든 것이있다!

이것이 내 목표를 달성하는 올바른 방법입니까? 내가 잘못 했습니까?

감사합니다

PS : Internet Explorer가 제대로 나에게 리디렉션 페이지를 보여줍니다, 파이어 폭스처럼 행동하지 않습니다.

PS2 : 여러분이 올바르게 App_Offline이라는 기능을 사용할 수 있다고 게시했습니다. 글쎄, 난 하나의 이유로 사용하지 싶습니다 내가 예를 들어, 하나 개의 상태,하지만 더 상태를 표시하지 않도록 단지 내 유지 관리 - 페이지를 사용하고 싶습니다 :

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

2

1) 유지 관리 -) 건설

<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

App_Offline.html을 확인하셨습니까? 그냥 팁. – alexn

+0

이 IIS6 또는 IIS7입니까? – Kev

+0

나는 당신이 이것을 복잡하게 생각한다고 생각합니다. App_Offline 페이지를 App_Offline.maint', App_Offline.under','App_Offline.temp'과 같이 세 개의 다른 App_Offline 페이지로 유지할 수 있습니다. 'App_Offline.htm'에 적용되는 이름을 변경하십시오. 즉, 예를 들어 web.config 설정을 해치거나 DLL을 떨어 뜨리면 .aspx 페이지가 실행되지 않을 위험이 결코 없음을 의미합니다. – Kev

답변

7

이렇게하는 것이 훨씬 간단하며 App_Offline.htm이라는 특수한 페이지를 사용합니다. 자세한 내용은

:

당신은 또한이 IE6과 잡았다 대해 스콧 후속 읽어보십시오

App_Offline.htm - by Scott Guthrie

:

App_Offline.htm and working around the "IE Friendly Errors" feature

사용하지 않을 때는 App_offline.disabled과 같은 이름으로 바꾸고 유지 보수를 할 때는 다시 App_Offline.htm으로 다시 이름을 바꿉니다.

"유지 관리"에 사이트를 배포하거나 web.config을 편집하는 것이 포함 된 경우 업로드하는 동안 사이트의 유동이 원활하지 않으므로 UnderMaintainance.aspx 페이지가 실행되지 않을 수 있습니다. 또는 실수로 ''의 '유지 관리'값을 덮어 썼을 수 있습니다.

App_Offline.htm은 배포를 엉망으로 만들 수 있으며 아무도 알 수 없으므로 훌륭합니다.