Cela peut sembler une question idiote, mais tout dans WCF semble beaucoup plus compliqué que dans asmx, comment puis-je augmenter le délai d'expiration d'un service svc?
Voici ce que j'ai jusqu'à présent:
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
openTimeout="12:00:00"
receiveTimeout="12:00:00" closeTimeout="12:00:00"
sendTimeout="12:00:00">
</binding>
</basicHttpBinding>
</bindings>
Et puis mon point de terminaison est mappé comme ceci:
<endpoint address=""
binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout"
contract="ServiceLibrary.IDownloads">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
L'erreur exacte que je reçois:
Le canal de demande a expiré en attendant une réponse après 00: 00: 59.9990000. Augmentez la valeur de délai d'expiration transmise à l'appel à Request ou augmentez la valeur SendTimeout sur la liaison. Le temps alloué à cette opération peut avoir été une partie d'un délai d'attente plus long.
Dans le client de test WCF, il existe une icône de configuration qui contient la configuration d'exécution de mon service:
Comme vous pouvez le voir, ce ne sont pas les mêmes valeurs que celles que j'ai définies pour cela? Qu'est-ce que je fais mal?
<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>
Le meilleur moyen est de modifier les paramètres souhaités dans votre code.
Consultez l'exemple ci-dessous:
la source
La configuration du délai d'expiration doit être définie au niveau du client, donc la configuration que je définissais dans le web.config n'avait aucun effet, l'outil de test WCF a sa propre configuration et vous devez définir le délai d'expiration.
la source
J'ai récemment eu la même erreur, mais j'ai pu la corriger en veillant à fermer chaque appel client wcf. par exemple.
ou
la source
using
tout en ne supprimant pas un objet de canal défectueux. Voici un autre blogueur avec une approche plus compatible avec lesusing
blocs: erwyn.bloggingabout.net/2006/12/09/WCF-Service-Proxy-Helper .