2010-05-14 3 views
2

J'ai un service Web WCF SOAP 1.1 avec la configuration spécifiée ci-dessous.SOAP Webservice WCF se comporte différemment lorsqu'il est appelé localement ou à distance

Un appel simultané à n'importe quelle méthode de ce point d'extrémité se bloque jusqu'à ce que l'autre renvoie lorsqu'il est appelé à distance (à partir d'un autre ordinateur sur le réseau).

Je ne peux pas répliquer lorsque ces méthodes sont appelées localement (avec un client situé sur la même machine).

J'ai essayé d'augmenter le maxConcurrentCalls sans aucune chance ... le comportement du service semble être différent selon l'emplacement local/distant du client. Toute proposition? Lorsque l'on regarde les compteurs de performance ServiceModelEndpoint d'un scénario d'appels simultanés, les résultats sont intéressants: les "appels en attente" distants atteignent la limite de 2 appels ... alors que les appels locaux de 20 threads simultanés vont jusqu'à 18 "appels en attente "! La limitation de 2 appels "à distance" semble être "par processus".

Merci,

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service behaviorConfiguration="MyCustomBehavior" name="CONTOSO.CONTOSOServerApi.IContosoServiceApiImplV1"> 
     <endpoint address="" binding="customBinding" bindingConfiguration="WebBinding" 
      bindingNamespace="http://contoso.com" contract="CONTOSO.CONTOSOServerApiInterfaceV1.IContosoServiceApiV1" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyCustomBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/MyEndPointV1" /> 
      <serviceDebug httpHelpPageEnabled="false" includeExceptionDetailInFaults="true" /> 
      <serviceThrottling maxConcurrentSessions="10000" maxConcurrentCalls="1000"/> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <customBinding> 
     <binding name="WebBinding"> 
      <textMessageEncoding messageVersion="Soap11" maxReadPoolSize="2147483647" maxWritePoolSize="2147483647"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      </textMessageEncoding> 
      <httpsTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 
    </system.serviceModel> 
</configuration> 
+0

Qu'est-ce que vous l'héberger? Si vous êtes sur un ordinateur client (XP, Vista, 7) et l'hébergement dans IIS, vous rencontrerez des problèmes de connexion. –

+0

Il est auto-hébergé avec le ServiceHost. Le serveur est sous Windows Server 2008 et le client est XP/Win7. – Idriss

+0

J'ai essayé de me connecter à distance au même service hébergé sur Win7, même problème. Également essayé sans pare-feu et sans antivirus ... même problème. Il semble être lié à la WCF. – Idriss

Répondre

1

Il était un problème de client, les contrôles System.Net le nombre de connexions TCP sortantes sont utilisées par défaut HttpWebRequest est 2 par point final:

ServicePointManager.DefaultConnectionLimit = 10;

Questions connexes