2010-06-17 5 views
5

공급 업체가 제공 한 웹 ASMX 서비스에 연결하고 데이터 집합을 전송합니다. 첫 번째 시도는 프로젝트에 서비스 참조를 추가 할 때 기본적으로 app.config 파일에서 Visual Studio가 throw하는 1 분 제한 시간에 도달했습니다. 나는 그것을 10 분으로 늘렸다. 또 다른 타임 아웃. 1 시간, 다른 시간 초과 :.NET 웹 서비스 (asmx) 시간 초과 문제

Error: System.TimeoutException: The request channel timed out while waiting for 
a reply after 00:59:59.6874880. Increase the timeout value passed to the call to 
Request or increase the SendTimeout value on the Binding. The time allotted to 
this operation may have been a portion of a longer timeout. ---> System.TimeoutE 
xception: The HTTP request to 'http://servername/servicename.asmx' has exceeded the allotted timeout of 01:00:00. The time allotted to this 
operation may have been a portion of a longer timeout. ---> System.Net.WebExcept 
ion: The operation has timed out 
    at System.Net.HttpWebRequest.GetResponse() [... lengthly stacktrace follows] 

나는 공급 업체와 연락했습니다. 그들은 전화가 한 시간 이상 걸린다는 것을 확인했습니다. (물어 보지 마세요, 그들은 제 존재의 상처입니다.) 나는 안전한쪽으로 가기 위해 타임 아웃을 10 시간으로 늘렸다. 그러나 웹 서비스 호출은 1 시간에 시간 초과가 계속됩니다.

<basicHttpBinding> 
    <binding name="BindingName" closeTimeout="10:00:00" 
        openTimeout="10:00:00" receiveTimeout="10:00:00" sendTimeout="10:00:00" 
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
        maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" 
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
        useDefaultWebProxy="true"> 
    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647" 
         maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
    <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
    </security> 
    </binding> 
    </basicHttpBinding> 

예쁜 말도 있지만 관계없이 제한 시간은 여전히 ​​1시간에서의 발로입니다 : 관련의 app.config 섹션은 이제 다음과 같습니다. 불행히도 모든 변경에는 적어도 한 시간은 더 걸립니다. 내가 부딪히는 몇 가지 내부 제한이 있습니까? 다른 시간 초과 설정이 어딘가에서 변경 될 수 있습니까? 이 설정에 대한 모든 변경 사항은 까지까지 예상되는 효과가있었습니다.

도움을 주셔서 감사합니다.

+0

1 시간에 시작될 때, 1 분 동안 제한 시간이 설정되면 정확히 동일한 예외입니까? –

+0

예, 같은 오류입니다. –

답변

4

먼저 : 시간 초과에 대한 Steven Cheng [MSFT] 응답 here을 참조하십시오. httpRuntime에 설정할 수있는 실행 시간 초과가 있습니다. 그는 "컴파일 디버그 ="false " '로 설정했는지 확인하십시오. 시간 초과 작업을 올바르게 수행하십시오.

무언가가 끔찍할 수도 있다는 사실 외에도 그들의 끝에 잘못 (또는 반환 된 데이터가 너무 커서/판단하지 않을거야 - 좋은 이유가 될 수 있습니다.), 당신은 그들의 작업을 비동기 적으로 호출 해 보았습니까? 같은 결과? 나는, 결과를 포함하는 이벤트 인수 전자에 대한 e.Result이 완료되면 당신이 필요로하는 무엇을해야 특정 이벤트 인수의 PARAM을해야합니다 시간

YourVendor.WebService ws = new YourVendor.WebService(); 
ws.LongRunningOperationCompleted += new YourVendor.LongRunningOperationEventHandler(ws_LongRunningOperationCompleted); 

ws.LongRunningOperationAsync(); 

// Implement the ws_LongRunningOperationCompleted handler (stub will auto generate) 

완성 된 이벤트 핸들러를 걸릴 것 같아요.

+0

클라이언트 측의 web.config 파일에는 httpRuntime 요소가 없으므로 매우 큰 시간 제한을 가진 파일을 추가 한 다음 다시 시작했습니다. 1 시간 후에 볼 수 있습니다. 감사합니다! –

+0

async 옵션에 대해서는 후드를 열고 비동기 호출을 변경할 수 있습니다. 일반적으로 타임 아웃에 더 관대합니까? 다르게 실행합니까? 데이터가 너무 방대하지는 않지만 결과가 반환되기 전에 반대쪽에서 처리되어야하며 처리 코드를 작성한 사람은 특정 데이터 크기를 지나서 성능에 주안점을 두지 않았습니다. –

+0

@ BarryFandango : 안녕하세요, Barry, 어떻게 문제를 해결 했습니까? httpRuntime timeout을 큰 값으로 설정하고 컴파일 디버그를 false로 설정했습니다. 1 시간 후에도 여전히 같은 오류가 발생합니다. – MichaelS