문제

나는 종종 이런 식으로 웹 서비스를 사용합니다

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

하지만 가끔 난 이렇게 해

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

두 번째 접근 방식은 매우 마음에 들지만 때로는 시간이 초과되어 애플리케이션을 다시 시작해야 했습니다. 첫 번째 접근 방식은 오버헤드가 발생하고 그다지 효율적이지 않다고 생각합니다. 실제로 때로는 첫 번째 호출에서 WebException - ConnectFailure(I 이유를 모르겠습니다).

기사를 발견했습니다(웹 서비스 문제(터널 끝의 빛?)) 재정의된 함수 GetWebRequest에서 KeepAlive 속성을 false로 설정하는 시간 초과에 대한 코드는 다음과 같습니다.

Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest

  Dim webRequest As Net.HttpWebRequest = CType(MyBase.GetWebRequest(uri), Net.HttpWebRequest)

  webRequest.KeepAlive = False

  Return webRequest

End Function

문제는 웹 서비스 시간 초과를 영원히 연장하는 것이 가능하며 마지막으로 이 문제를 처리하기 위해 웹 서비스를 어떻게 구현합니까?입니다.

도움이 되었습니까?

해결책

웹 서비스용 Visual Studio에서 생성된 클래스는 상태가 거의 없는 프록시일 뿐이므로 생성 비용이 매우 저렴합니다.나는 그들의 메모리 소비에 대해 걱정하지 않을 것입니다.

당신이 찾고 있는 것이 한 줄로 웹 메소드를 호출하는 방법이라면 간단히 다음과 같이 할 수 있습니다:

new mywebservice().call()

건배

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top