2012-10-08 3 views
2

ASP.NET 웹 서비스 프로젝트가 있습니다. 현재 시간이 00:00에서 01:00 사이라면이 서비스의 모든 메소드를 "끄기"(void 또는 null 반환)해야합니다. 가장 좋은 방법은 무엇입니까? global.asax 파일 일 수 있습니까?.net 서비스의 모든 기능을 끄십시오.

+1

클라이언트가 예외를 받게되는 서비스를 오프라인으로 (예 : 웹 서버를 끄는 것) 할 수 있습니까? –

+1

@ RB. 하드웨어를 끌 수 없습니다. 웹 서비스의 메서드는 아무 것도하지 않아야합니다. – Wachburn

+0

웹 서비스를 오프라인으로 전환하는 데는 여러 가지 방법이 있습니다. 내가 물어 보려고했던 것은 "웹 서비스에 대한 호출이 void/null 응답이 아닌 예외를받는다면 괜찮습니까?" –

답변

2

당신은 웹 서비스이며, 다음 시간 당신은 단지 그것을 잘라 것을 허용하지 않을 경우 경우 단지 확인 Application_BeginRequestGlobal.asax에에 그렇게 할 수 있습니다.

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    string cTheFile = HttpContext.Current.Request.Path; 
    string sExtentionOfThisFile = System.IO.Path.GetExtension(cTheFile); 
    // here you can check what file you wish to cut, ether by file, ether by extention 
    if (sExtentionOfThisFile.Equals(".asmx", StringComparison.InvariantCultureIgnoreCase)) 
    { 
    // and here is the time limit. 
    if(DateTime.UtcNow.Hour >= 0 && DateTime.UtcNow.Hour <= 1) 
    { 
     HttpContext.Current.Response.TrySkipIisCustomErrors = true; 
     HttpContext.Current.Response.StatusCode = 403; 
     HttpContext.Current.Response.End(); 
     return ;  
    }  
    } 
} 
+0

이것은 아이디어입니다. 모든 서비스 확장을 확인하거나 특정 파일 클래스를 유지하는 파일 하나만 가져올 수 있습니다. – Aristos

+0

이 방법은 전역 적으로 수행하는 가장 좋은 방법입니다. 각 메서드를 사용하지 않고도 메서드가 계속 작동하고 반환 할 가능성이 거의 없습니다. –

+0

@ RyanMcDonough 왜? 그 코드로 그들은 아무것도 반환하지 않습니다. 어쨌든 내부 플래그를 사용할 수도 있고 각각의 메서드에서 시간이 지나면 원하는 것을 반환 할 수 있습니다 ... 또는 여기에서 그는 경로를 다시 작성하고 아무 것도 반환하지 않는 다른 메서드로 이동할 수 있습니다 ... – Aristos

관련 문제