2011-11-09 3 views

답변

3

IIS는 웹 사이트의 루트에 'app_offline.htm'이라는 파일을 특수 처리하므로 파일 이름을 변경하지 않으면이 제안이 작동하지 않을 수 있습니다. 하지만, 여기 어쨌든 ...

당신은 이것을 위해 HttpHandler를 사용할 수 있습니다. web.config에 다음과 같이 추가하십시오.

<add name="app_offline_GET" path="app_offline.htm" verb="GET" type="namespace.classname,dllname" /> 

분명히 'type'속성에 적절한 정보로 대체하십시오. 이 같은 HttpHandler를에서

, 무언가 :

public void ProcessRequest(HttpContext context) { 
    context.Response.WriteFile("app_offline.htm"); 
    context.Response.StatusCode = 209;   
    context.Response.StatusDescription = "whatever"; 
} 
+0

를, IIS는 여전히 "503 서비스를 사용할 수 없음"을 반환합니다. 그리고 핸들러가 관리되기 때문에 올바르지 만 'app_offline.htm'은 새 요청을 처리하지 않도록 명시 적으로 알려서 코드에 부딪히지 않기 때문입니다. – UserControl

+0

상황에 따라 파일 이름을 변경할 수 있습니까? 그렇지 않은 경우 HttpHandler 대신 HttpModule이 일을 처리하기 위해 처리 시퀀스에서 일찍 시작합니다. – Ray

4

IIS URL Rewrite Module를 사용할 수 ASP.Net의 'app_offline.htm'기능을 사용하는 대신, 그것은 huge bag of tricks 및 설정 사용자 지정 응답이있다 코드 중 하나입니다.

페이지의 콘텐츠가 중요하지 않은 경우 응답 코드 만 사용하고 해당 모듈을 사용하면 규칙 코드를 사용하여 빈 응답을 요청으로 반환하는 규칙을 구성 할 수 있습니다 . 이 같은 무언가로 당신의 Web.config에서 실현됩니다

:

<configuration> 
    <system.webServer>  
     <rewrite> 
      <rules> 
       <rule name="app_offline" stopProcessing="true"> 
        <match url=".*" /> 
        <action type="CustomResponse" statusCode="209" statusReason="System unavailable" statusDescription="The site is currently down for maintenance, or something." /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+0

작동하지 않습니다. 지금까지 요청이 ASP.NET 파이프 라인에 들어가기 전에 모듈이 작동하는 것으로 알고 있습니다. 나는 전혀 성취하기가 불가능하다고 생각하기 시작한다. ( – UserControl

+0

예는 내가 ASP.Net에 전달하지 않고 209 코드를 사용하여 빈 응답을 반환함으로써 요청을 처리 할 것이다. 무엇을 찾고 있습니까? – woodysan

+0

ASP.NET은 항상 들어오는 모든 요청에 ​​대해 200 코드로 app_offline.htm의 내용을 반환합니다.이 코드를 덮어 써야합니다 (사용자 지정 NLB 시나리오). – UserControl

1

상태 코드를 기반으로 특정 콘텐츠를 표시하려면, 당신은 내용을 응답이 상태 코드를 설정할 수 및 매핑 할 수 있습니다 것은 기반 쇼 httpErrors 섹션의 코드. 보존의 이익을 위해이 게시물 https://serverfault.com/questions/483145/how-to-add-a-site-wide-downtime-error-message-in-iis-with-a-custom-503-error-co

의 예를 참조하십시오, 나는 아래의 예를 복제합니다 :이 작동하지 않습니다

<system.webServer> 
    ... 
    <rewrite> 
     <rules> 
      <rule name="SiteDown" stopProcessing="true"> 
       <match url=".*" /> 
       <action type="CustomResponse" statusCode="503" statusReason="Down for maintenance" statusDescription="will be back up soon" /> 
      </rule> 
     </rules> 
    </rewrite> 

     <httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File"> 
      <remove statusCode="503" subStatusCode="-1" /> 
      <error statusCode="503" path="503.html" /> 
     </httpErrors> 
</system.webServer> 
관련 문제