2009-09-16 8 views
1

웹 사이트가 아직 살아 있고 웹 사이트가 데이터베이스에서 읽을 수 있는지 테스트 할 수있는 간단한 WinForms 앱을 작성해야합니다.ASP.Net로 작성된 웹 사이트가 아직 살아 있는지 테스트하는 방법은 무엇입니까?

C#에서 "(HttpWebResponse) myHttpWebRequest.GetResponse()"를 사용하여 사이트가 살아 있는지 테스트하지만, 내 웹 사이트에서 테스트 페이지를 얻는 방법을 잃어 버렸습니다. "응답"은 데이터베이스에 대한 자체 연결을 테스트 할 수 있음을 나타냅니다.

 
private void CheckUrl() 
{ 
    try 
    { 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.google.com"); 

    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 
    myHttpWebResponse.Close(); 

    label1.Text = myHttpWebRequest.Address.AbsoluteUri; 
    } 
    catch (WebException e) 
    { 
    label1.Text = "This program is expected to throw WebException on successful run." + 
            "\n\nException Message :" + e.Message; 

    if (e.Status == WebExceptionStatus.ProtocolError) 
    { 
     label1.Text = String.Format("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
     label2.Text =String.Format("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
    } 
    } 
    catch (Exception e) 
    { 
    label1.Text = e.Message; 
    } 
} 

나는 위의 코드로 돌아 가지의 웹 양식의 측면에서 도움을 기대했다 : 여기

합니다 (MSDN에서 찢어) 내 윈폼 측의 샘플 코드입니다.

여러분이 제공 할 수있는 도움에 감사드립니다.

  • 리처드
+0

@chard O'Neil : 내게 묻지 않아도되기를 바랍니다. 사이트가 넘어지기 때문에이 작업을 수행하고 있습니까? –

+0

안녕 미치. 예, 사이트가 활기를 띄지 못하고 무엇이 원인인지 알아 내려고 노력하고 있지만 그 동안 w3wp 서비스를 다시 설정할 수 있으며 사이트가 다시 복구됩니다. Interbase에 데이터베이스 연결을 위해 이전 버전의 Borland BDP를 사용하는 이전 사이트로, 우리가하고있는 일이 하루 중 한 번에 튕겨 나간 것처럼 보입니다. –

답변

1

사이트가 실패하면 어떻게됩니까? 그것은 500 상태 코드 또는 타임 아웃을 반환합니까?

또 다른 방법은 다음과 같습니다. 성공하면 항상 기대했던대로 작동합니까?

웹 앱에서 200 개의 응답 코드를 반환하거나 정상적으로 작동하는 경우 응답에 예상되는 HTML 마크 업을 포함하는 URL을 호출 할 수 있습니다.

winform에게이 URL을 호출하고 예상되는 마크 업을 위해 Response.status 또는 출력 버퍼의 텍스트를 검사하십시오. 또한 httprequest에 시간 초과를 만들어야합니다. 페이지가 시간 초과 내에로드되지 않으면 웹 예외가 발생하며 사이트에 오류가 있음을 알 수 있습니다.

또한 예산이있는 경우 gomez.com과 같은 외부 모니터링 서비스를 통해이를 자동화하고 사이트 가용성에 대한보고를 제공 할 수 있습니다.

+0

Hey Matt 나는 지금 500 개의 상태 코드를 반환하고 있다고 생각합니다. 나는 내 앞에서 바로 그것을 가지고 있지 않습니다. 저는 지금 언더 월드의 도시를보고 있습니다. 그리고 그것은 내 머리 속으로 튀어 나와 누군가가 올바른 방향으로 나를 안내 할 수 있을지도 모릅니다.
데이터베이스에서 키 값을 찾아 내게이 값을 반환하는 페이지를 만들 수 있다고 생각합니다. 그래서 나는 항상 무엇을 찾아야할지 알 것입니다. 나는 단지 WinForms 앱에서 그것을 얻는 방법을 발견하려고 노력했다. 그게 내가 어떻게해야할지 모르겠다.
감사합니다. –

+0

이봐, 모두들 ... 나는 내가 받아 들여진 대답을하기 위해 돌아 오지 않았다는 것을 유감스럽게 생각한다. 모두가 도움이 필요했지만 도움이 필요했기 때문에 모든 사람이 너무 유용하고 도움이되었습니다. 특정 도움말을 클릭하기는 어려웠지만 Matt의 제안과 같은 것을 구현 한 결과 완벽하게 작동했습니다. –

2

당신은 IAMALIVE라는 프로젝트의 내부 웹 서비스를 만들고이를 하나의 문자를 반환 할 수 있습니다.

WinForms 영역에서 해당 WebService를 사용하고 작동하면 사이트가 살아 있습니다.

+0

안녕하세요. 우리는 이것에 대해 생각했지만, 서버가 놀란 것처럼 보이지는 않습니다. 특정 웹 앱입니다. 특정 문제를 해결하는 동안 사이트를 주시해야합니다. 응답 해 주셔서 감사합니다. –

+0

+1 내 대답을 영감을 위해 :) – JoshJordan

2

Papuccino의 대답의 핵심은 실제로 [WebMethod] 특성으로 표시하여 WebForms 페이지의 C# 코드 숨김에 포함 된 웹 서비스를 만들 수 있습니다. 그것들은 서버뿐만 아니라 웹 어플리케이션 내에 존재할 것입니다.

+0

안녕 조쉬 나는 실제로 당신이 그것을 할 수 있는지 몰랐다. 필자가 수행 한 유일한 웹 서비스 작업은 전체 "웹 서비스"를 만드는 것입니다. 그런 다음 WSDL 파일을 만들었고 원하는대로 사용했습니다. 나는 당신의 제안과 함께 앞으로 나아갈 방법에 대해 조금 확신하지 못합니다. 앱의 기존 페이지를 가져 와서 [WebMethod]를 추가 한 다음 어떻게 든 WSDL 파일을 생성 한 다음 액세스 할 수 있다고 말하고 있습니까? 그렇다면 이것이 나를위한 완벽한 방법 일 수 있습니다. 나는이 모든 일을 도와 주신 여러분 께 진심으로 감사드립니다. –

+0

더 간단합니다! WebService 유형의 솔루션 내에 또 다른 프로젝트를 만드십시오. IDE는 필요한 부분 대부분을 현장에서 생성합니다. HelloWorld webmethod의 구문을 따르고 단일 문자 또는 바이트를 반환하는 메서드를 만듭니다. : D –

1

웹 양식 페이지에 데이터베이스 연결을 열고 간단한/영향을주는 작업을 수행하십시오.

select SystemTableId from dbo.[SystemTable] where SystemTableId = 1 

여기서 SystemTable은 단일 행 테이블입니다.

어떤 이유로 든 페이지에서 예외가 발생하면 Response.Write에 예외 메시지가 표시되고 그렇지 않으면 Response.Write ("SUCCESS") 또는 이와 유사합니다.