ASP.NET 2.0-app_offline.htm 사용 방법


120

app_offline.htm본질적으로 응용 프로그램을 종료하고 다른 페이지가 요청되지 않도록하는 .NET 2.0 응용 프로그램의 루트 내에 배치 할 수있는 파일 에 대해 읽었습니다 .

파일을 루트에 배치했는데 사이트가 여전히로드됩니다. IIS의 기본 문서로 이동하여로 설정했는데 app_offline.htm사이트가 여전히로드됩니다 (하지만 캐싱 문제 일 수 있음).

어쨌든, 이것을 사용하여 문제가 발생한 사람이 있습니까? 내가 뭘 잘못하고 있니?


이를 문서화하는 Microsoft 페이지가 있습니까?
Coops 2014



app_offline.htm을 성공적으로 사용하여 웹 앱 콘텐츠를 숨기고 임시 페이지를 표시했습니다. 그러나 app_offline.htm 파일을 삭제 한 후에도 원본 데이터를 검토하는 데 문제가 있습니다. 그녀는 내 질문 : stackoverflow.com/questions/42979042/...
naz786

답변:


160

나는 매우 편리한 app_offline.htm 트릭을 사용하여 과거에 아무 문제없이 사이트를 종료 / 업데이트했습니다.

IIS 내에서 구성한 웹 사이트의 "루트"에 "app_offline.htm"파일을 실제로 배치하고 있는지 확인하십시오.

또한 파일 이름이 정확히 다음과 같은지 확인하십시오. app_offline.htm

그 외에는이 파일 (이 특정 이름 사용)의 처리가 IIS 자체 (IIS v6의 경우)가 아닌 ASP.NET 런타임에서 처리되기 때문에 변경해야하는 IIS에 대한 다른 변경 사항이 없어야합니다.

그러나이 파일을 사이트의 루트에 배치하면 응용 프로그램이 강제로 "종료"되고 "app_offline.htm"파일 자체의 내용이 표시되지만 기존 요청은 여전히 ​​실제 웹 사이트를 제공합니다. 그들에게. 새로운 요청 만 app_offline.htm 콘텐츠를 가져옵니다.

여전히 문제가있는 경우 추가 정보를 보려면 다음 링크를 시도하십시오.

Scott Gu의 App_Offline.htm

App_Offline.htm 및 "IE 친화적 인 오류"기능 해결

app_offline.htm이 현재 요청을 중지합니까 아니면 새 요청 만 중지합니까?


6
@JackM-문제 없습니다! 사실, 나는 종종 내 웹 사이트에 파일을 남겨두고 "xapp_offline.htm"과 같이 이름을 붙입니다. 그러므로 그것은 아무것도하지 않고 거기에 앉아 있습니다. 사이트의 일부 또는 전체를 업그레이드하려면 파일 이름을 바꾸고 "x"접두사를 제거합니다 (일반적으로 FTP를 통해 수행됨). 이렇게하면 사이트가 종료되고 업그레이드를 수행 한 다음 "x"접두사로 파일 이름을 다시 바꿉니다!
CraigTP

@JackMarchetti-global.asax 라우팅을 사용하는 ASP.NET MVC 웹 사이트에서도 작동합니까? 나는 여기에서 모든 제안을 확인했지만 여전히 이것이 작동하도록 운이 없다 :(
Squig

이전 댓글 업데이트 : 현재 작동 중이며 일종의 캐싱 문제 였음에 틀림 없습니다. <CTRL> + Refresh를 사용했지만 아마도 다른 곳에서 캐시 된 것 같습니다.
Squig 2013 년

이를 문서화하는 Microsoft 페이지가 있습니까?
Coops 2014

1
@CodeBlend ScottGu의 블로그에 대한 링크는 상당히 공식적이지만 가장 "공식적인"Microsoft 페이지는 MSDN의 다음 페이지 일 것입니다. msdn.microsoft.com/en-us/library/vstudio/…
CraigTP

47

app_offline.htm 파일의 길이가 최소 512 바이트인지 확인하십시오. 0 바이트 app_offline.htm은 효과가 없습니다.

업데이트 : 최신 버전의 ASP.NET/IIS는 내가 처음 작성할 때보 다 더 잘 작동 할 수 있습니다.

업데이트 2 : ASP.NET MVC를 사용하는 경우 web.config에 다음을 추가합니다.

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
나는 빈 파일을 가진 정확한 파일 이름을 가지고 있었고 작동했습니다-내가 사용한 URL에 관계없이 빈 페이지가 표시됨
Coops

: 512 바이트 제한 문제에 대한이 링크를 확인 codeproject.com/Articles/21319/...
Massood Khaari

이것은 페이지를 자체 오류 메시지로 대체 할 수있는 이전 버전의 IE에서 특히 그렇습니다
ChewToy

Scott Gu는 그의 블로그
Matt

2
난 단지 완전히 위에 내 Web.config를 대체하여 응용 프로그램을 오프라인 모드로 전환 내 MVC 사이트를 얻을 수
마태 복음 잠금

14

이는 IIS 6 및 7.x 및 .NET 2, 3 및 4.x에서 동일하게 작동합니다.

또한 app_offline.htm이있는 경우 IIS는 다음 http 상태 코드를 반환합니다.

HTTP/1.1 503 Service Unavailable

이것은 모두 의도적으로 설계된 것입니다. 이를 통해로드 밸런서 (또는 기타)가 서버가 오프라인 상태임을 확인할 수 있습니다.


1
app_offline.htm유지 관리 기간 동안 사용자에게을 표시하기를 원하기 때문에로드 밸런서가 서버가 오프라인이라고 생각하는 것을 원하지 않습니까?
Luke

2
@Luke : 503 응답이 도움이되는 이유에 대한 더 나은 예 : "사이트가 다운되었습니다"콘텐츠에 대한 색인을 생성하기로 결정하기보다는 Google의 웹 크롤러가 웹 사이트가 현재 다운되었음을 알고있는 것이 좋습니다 (그리고 사이트에 많은 중복이있는 것으로 플래그 지정). 함유량). 또한 CDN이 오리진이 다운되었음을 감지하여 콘텐츠 캐싱을 피할 수 있다면 도움이 될 수 있습니다.
Brian

10

가능한 권한 문제

이 게시물이 상당히 오래되었다는 것을 알고 있지만 비슷한 문제가 발생하여 파일의 철자가 정확합니다.

원래 다른 위치에 app_offline.htm 파일을 만든 다음 응용 프로그램의 루트로 옮겼습니다. 내 설정 때문에 권한 문제가 발생했습니다.

웹 사이트는 마치 거기에없는 것처럼 작동했습니다. 이동하는 대신 루트 디렉토리 내에 파일을 생성하면 문제가 해결되었습니다. (또는 속성-> 보안에서 권한을 수정할 수 있습니다)

누군가에게 도움이되기를 바랍니다.


4

app_offline.htmIIS에서 가상 디렉터리 또는 웹 사이트의 루트에 있는지 확인 합니다.


확실히 뿌리에 있습니다. 내 inetput \ wwwroot [WebsiteDirectory] \ app_offline.htm이 있습니다
Jack Marchetti

3

파일 이름 확장자가 탐색기에 표시되고 파일 이름이 실제로

app_offline.htm

아니

app_offline.htm.htm


0

해결하는 데 약간의 시간이 걸리는 원래 질문과 매우 유사한 문제가 발생했습니다.

다른 사람이 MVC 응용 프로그램에서 작업하고이 스레드로가는 길을 찾은 경우 적절한 .Net aspnet_isapi.dll에 대한 와일드 카드 매핑이 정의되어 있는지 확인하십시오. 이 작업을 수행하자마자 app_offline.htm이 예상대로 작동하기 시작했습니다.


IIS 6 구성 단계

IIS 응용 프로그램 속성에서 가상 디렉터리 탭을 선택합니다.

애플리케이션 설정에서 구성 버튼을 클릭합니다.

와일드 카드 애플리케이션 맵에서 삽입 버튼을 클릭합니다.

C : \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll을 입력하고 확인을 클릭합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.