Pode parecer uma pergunta boba, mas tudo no WCF parece muito mais complicado do que no asmx. Como posso aumentar o tempo limite de um serviço svc?
Aqui está o que tenho até agora:
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
openTimeout="12:00:00"
receiveTimeout="12:00:00" closeTimeout="12:00:00"
sendTimeout="12:00:00">
</binding>
</basicHttpBinding>
</bindings>
E então meu endpoint é mapeado assim:
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout"
contract="ServiceLibrary.IDownloads">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
O erro exato que estou recebendo:
O canal de solicitação atingiu o tempo limite enquanto aguardava uma resposta após 00: 00: 59.9990000. Aumente o valor de tempo limite passado para a chamada para Request ou aumente o valor SendTimeout na Ligação. O tempo alocado para esta operação pode ter sido uma parte de um tempo limite mais longo.
No WCF Test Client, há um ícone de configuração que contém a configuração de tempo de execução do meu serviço:
Como você pode ver, não são os mesmos valores que defini para ele? O que estou fazendo de errado?
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDownloads" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
A melhor maneira é alterar qualquer configuração desejada em seu código.
Confira o exemplo abaixo:
fonte
A configuração do tempo limite precisa ser definida no nível do cliente, portanto, a configuração que eu estava definindo no web.config não teve efeito, a ferramenta de teste do WCF tem sua própria configuração e é aí que você precisa definir o tempo limite.
fonte
Recebi o mesmo erro recentemente, mas foi capaz de corrigi-lo garantindo o fechamento de todas as chamadas do cliente wcf. por exemplo.
ou
fonte
using
sem descartar um objeto de canal com falha. Aqui está outro blogueiro com uma abordagem mais compatível comusing
blocos: erwyn.bloggingabout.net/2006/12/09/WCF-Service-Proxy-Helper .