J'ai un Service WCF et d'une application avec un Service de Référence, et avec l'application j'ai une boucle et à chaque itération, c'est de faire un appel à une méthode dans cette web wcf-service.
Le problème est que, après environ 9 appels ou alors, il s'arrête juste...et si vous frappez Pause
bouton de VS, vous verrez qu'il est coincé sur la ligne où il fait l'appel.
Après un certain temps d'attente pour elle, ce TimeoutException est levée:
Le canal de demande dépassé lors de la en attente d'une réponse après 00:00:59.9970000. Augmenter le délai d'expiration la valeur transmise à l'appel à la Demande ou augmentation de la SendTimeout valeur sur le De liaison. Le temps alloué à cette l'opération peut avoir été une partie d'un délai plus long.
J'ai fait des recherches un peu sur ce, et a trouvé des solutions qui participent d'édition de l'application.config de l'application, et voici des extraits de celui-ci:
<serviceBehaviors>
<behavior name="ThrottlingIssue">
<serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" />
</behavior>
</serviceBehaviors>
.
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
Puis, après que j'ai arrêter le débogage, après quelques minutes, un message d'erreur s'affiche me disant qu'une défaillance Catastrophique a eu lieu.
Comment puis-je résoudre ce problème? Je n'ai pas ce problème lorsque je travaillais avec un Service Web normal.
Pour référence, voici la toute l' app.config
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="ThrottlingIssue">
<serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IDBInteractionGateway" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:28918/DBInteractionGateway.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDBInteractionGateway"
contract="DBInteraction.IDBInteractionGateway" name="WSHttpBinding_IDBInteractionGateway">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
[Mise À Jour] Solution:
Apparemment, après chaque demande que vous avez à l' Close
le lien...je suis maintenant de fermer la connexion après chaque demande, et il fonctionne comme un charme.
Bien que ce que je ne comprend toujours pas, c'est que dans mon application.config, j'ai mis mes paramètre et maxConcurrentSessions à 500, et pourtant, je ne peux que faire 10. Quelqu'un a une réponse pour celui-ci? (j'ai peut-être quelque chose de mal dans mon application.config posté ci-dessus)
La réponse à la question ci-dessus (maintenant en pointillés) c'est parce que j'étais édition de la client app.config
, pas le fichier de configuration du service (web.config
)