2009-08-27 4 views
9

WCF에서 시간 초과 문제가 있습니다.WCF 시간 초과 문제

다음 오류입니다 :

{ "00 후 응답을 기다리는 동안 요청 채널 시간 초과 : 00 :. 59.9843744 요청에 호출에 전달 시간 제한 값을 늘리거나에 SendTimeout 값을 증가 이 작업에 할당 된 바인딩. 시간은 긴 타임 아웃의 일부분일지도 모른다. "}

구글에 검색 한 후,이 사이트로부터 용액

발견

,536,913

http://social.msdn.microsoft.com/Forums/en-US/peertopeer/thread/38306972-3128-4f0c-937b-5d162d4d8e74

그래서 나는 나의 app.config 파일

<behavior name="ContactServiceBehaviour"> 
    <serviceMetadata httpGetEnabled="true" /> 
    <dataContractSerializer maxItemsInObjectGraph="1000000000"/> 
    <serviceDebug includeExceptionDetailInFaults="true" /> 
    <serviceThrottling maxConcurrentCalls="100" 
         maxConcurrentSessions="100" 
         maxConcurrentInstances="100"/> 
</behavior> 

해결책은 무엇입니까 따라 변경?

+1

안녕하세요. 여기에 같이 가야 할 것이 많지 않습니다. 당신이 서비스를 호스팅하고 있습니까? 또는 WCF 클라이언트를 실행하고 있습니까? –

답변

18

당신이 언급하는 포럼 게시물은 빨간 청어입니다. 오류 메시지를 명확하게 WCF 클라이언트 및 서비스 시간 제한 속성을 늘려야한다고 나와 있습니다. (서비스에서 변경 한 경우 클라이언트가 업데이트 될 때 항상 클라이언트가 선택하지 않는 것으로 나타났습니다)

Visual Studio에서 도구 메뉴로 이동하면 'WCF 서비스 구성 편집기 '. 프로젝트 web.config를로드하고 서비스에 대한 새로운 바인딩을 정의하십시오.

변경할 설정은 SendTimeout 값입니다. 기본적으로 60 초입니다.

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
    <binding name="WCFBinding" sendTimeout="00:02:00"> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
+1

WCF를 처음 접하는 사용자에게는 소리가납니다. http://msdn.microsoft.com/en-us/library/ms731067.aspx 위대한 튜토리얼을 참조하십시오. –

+1

제한 시간을 늘리면 시간 초과 오류가 거의 해결되지 않습니다. 일반적으로 클라이언트는 서버에 연결할 수 없기 때문에 발생합니다. 타임 아웃은 단지 몇 시간이나 며칠을 기다리지 않아도되기를 기다리고 있습니다. –

+1

장기 실행 태스크를 기다리는 클라이언트 인 경우 60 초가 그리 긴 것은 아닙니다. 그리고 아마도 가장 쉬운 해결 방법 일 것입니다. –

0

타임 아웃을 처리하려는 경우 try/catch 블록에서 WCF 서비스의 클라이언트 측 호출을 래핑 할 수 있습니다.

여기에 트릭이 있습니다. 디버거가 연결되어 있지 않으면 타임 아웃으로 인해 catch 블록이 실행됩니다. 그러나 디버거가 연결되어 있으면 디버거가 catch 블록에 도달하기 전에 오류를 차단합니다.