Tous,calendrier WCF par intermittence
J'ai un service WCF que les temps de manière intermittente, généralement au bout de dix ou douze demandes du client asp.net. Le service utilise la réflexion pour trouver des classes dans son assembly (DLL DLL) qui ont un ensemble d'attributs personnalisés. Le processus lui-même est très rapide, il ne prend généralement que quelques millisecondes, et quand cela fonctionne, cela fonctionne très bien.
La définition d'un point d'arrêt dans le code appelant et dans le service lui-même m'indique que le délai d'attente se produit entre l'appel de la classe de proxy client WCF et lorsque cette méthode est réellement exécutée.
Des idées?
Mise à jour: la liaison, etc de web.config:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Sdd.Services.ControlPanelBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Sdd.Services.ControlPanelBehavior"
name="Sdd.Services.ControlPanel">
<endpoint address="" binding="wsHttpBinding" contract="Sdd.Services.IControlPanel">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
MISE À JOUR: Et voici la partie pertinente de la web.config du client:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IControlPanel" 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="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<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:81/services/ControlPanel.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IControlPanel"
contract="PublicSite.IControlPanel" name="WSHttpBinding_IControlPanel">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Avez-vous plus d'informations? Quel type de configuration utilisez-vous (liaison, où se trouvent le client et le serveur, à quel moment les différents délais d'attente sont-ils définis). Que se passe-t-il lorsque vous augmentez les délais d'attente? – olle
Client et serveur sont tous deux sur ma boîte de dev, fonctionnant sous UltiDev Cassini. Quand cela fonctionne, le temps de réponse est inférieur à 50 ms. Ceci est cohérent jusqu'à ce que cela ne marche pas * soudainement, quand il expire après quelques minutes. Je ne suis pas sûr de ce que la liaison est - j'ai pris l'approche naïve de clic droit, ajouter ... service WCF dans VS2008. Si vous pouvez me diriger vers où je peux trouver cette information, je serai heureux de rapporter. Merci! –
Je sais qu'il attaque un symptôme, mais s'il vous plaît vérifiez quels sont vos paramètres de délai d'attente de liaison. Voir http://msdn.microsoft.com/en-us/library/ms731291.aspx pour des explications. –