2012-11-21 2 views
5

IIS에서 호스팅되는 WCF 서비스가 있습니다. 로그 파일에서 3 분 이상 걸리는 요청을 보내는 클라이언트가 HTTP 503 (서비스를 사용할 수 없음) 오류를 수신하는 것을 볼 수 있습니다.IIS가 호스팅하는 WCF 서비스에서 시간 제한을 어떻게 변경합니까?

어떻게 타임 아웃을 변경합니까? 테스트 해보기 위해 타임 아웃을 3 초로 줄여 실제로 타임 아웃되었는지 확인했습니다.

나는 아무것도 할 듯

<system.web> 
    <httpRuntime executionTimeout="3"/> 
</system.web> 

을 시도했습니다.

또한 바인딩을 사용하지 않으려 고 시도했습니다.

<basicHttpBinding> 
    <binding name="basicHttp" receiveTimeout="00:00:03" sendTimeout="00:00:03" > 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 

참고 : 우리가 제어하는 ​​기간이 지난 후에 일종의 오류를 반환하는 WCF 서비스를 얻으려고합니다. 나는 예상보다 오래 걸린 요청을 기다릴 것이라고 기대하지 않습니다.

내가 머리를 찢기 전에 가장 도움이되는 도움이 필요합니다.


그냥 명확히하기

...

이 서비스는 최대 있었고 몇 달 동안 실행하고있다. 그러나 가끔 실행되는 요청을 처리 할 때 클라이언트는 3 분 후에 HTTP 503 응답을받습니다. 배경에서는 요청이 제대로 처리되었지만 5 분 이상 걸렸습니다. 분명히 클라이언트가 이미 오류 응답을 수신 했으므로이 시점까지는 너무 늦었습니다.

다른 요청은 정상적으로 처리되고 있습니다.

이 시점에서 시스템 부하는 매우 낮습니다. 사실, 이것은 테스트 환경이며 트랜잭션은 중복되지 않고 한 번에 하나씩 있습니다.

또한 바인딩이 끝점에 연결되어 있는지 확실히 알고 있습니다. WCF Config Editor에서 config 파일을 열었습니다. 모든 것이 제대로 연결되었습니다.

WCF의이 시점에서 시간 제한을 구성 할 수 있습니까? 그런 식으로 나는 이해하지 못할 것이다. 그렇다면 HTTP 503 오류가 반환되는 이유는 무엇인가?

우리가 정말로하고 싶은 것은 503 응답이 반환되기 전에 시간 길이를 제어하는 ​​것입니다.

+0

비동기 적으로 실행하고 결과를 폴링하는 것에 대해 생각해 보셨습니까? – ChrisBint

+0

서비스가 현재 생산 중이며 가까운 장래에 그런 종류의 변화가 일어나지 않을 것입니다. 당분간, 우리는 단지 타임 아웃 기간을 제어하려고합니다. – illusio

+0

서비스에 바인딩 오류가있는 경우 (특별한 처리없이) 클라이언트는 http 오류 만 표시합니다. 클라이언트 프록시의 시간 제한을 3 초로 변경하면 클라이언트는 예상 한 통신 예외를 확인해야합니다. – ErnieL

답변

1

IIS 및 테스트 WCF 서비스에서 많은 경험을 한 후 동일한 서버에서도 문제를 재현 할 수 없었습니다. 이 문제는 회사 내의 다른 그룹에서만 볼 수 있습니다.내가 HTTP를 강제 할 수

유일한 방법은 503 오류가 응용 프로그램 풀을 오프라인으로했지만, 요청에 왔을 때이 예상 인한 오류는 즉시 반환 할 수 있습니다.

추가 조사가 HTML이와 관련된 것으로 나타났다 IIS에서 오는 503 응답이 클라이언트에 반환 된 응답과 다릅니다.

틀림없이 아직 증명되지 않았지만 문제는 클라이언트와 서버 사이의 일부 네트워크 구성 요소로 인해 발생한 것으로 결론지었습니다.

실제로 시간 초과를 반환하는 프록시가있었습니다.

1

일반적으로 바인딩이 끝점에 연결되어 있지 않기 때문에 서비스 끝점에 영향을주지 않는 바인딩을 변경하면됩니다.

모든 것이 지금 503 개가 나오고 이전에 작동하는 경우 응용 프로그램 풀의 ID 인 사용자 계정에 만료 된 암호가있을 수 있습니다.

다른 호출이 아닌 일부 호출에서 작동하고로드가 증가한 경우 클라이언트가 연결을 닫지 않고 최대 동시 호출 수의 기본 한계를 초과 할 수 있습니다.

+0

Shiraz에게 답해 주셔서 감사합니다. 나는 그 질문에 대한 답변을 확대했다. 내 초기 생각은 동일했지만 바인딩이 실제로 참조가되지는 않지만 괜찮다고 확신합니다. 트랜잭션이 3 분 이상 걸릴 때만 503 개의 오류가 반환됩니다. – illusio

관련 문제