SOAP WCF Webservice ведет себя по-разному при локальном или удаленном вызове - PullRequest
2 голосов
/ 14 мая 2010

У меня есть веб-сервис WCF SOAP 1.1 с конфигурацией, указанной ниже.

Параллельный вызов любого метода этой конечной точки зависает до тех пор, пока другой не вернется при удаленном вызове (с другого компьютера в сети).

Я не могу повторить это, когда эти методы вызываются локально (с клиентом, расположенным на том же компьютере).

Я попытался увеличить maxConcurrentCalls, но безуспешно ... Поведение службы кажется другим в зависимости от локального / удаленного расположения клиента. Есть предположения?

При просмотре счетчиков производительности ServiceModelEndpoint в сценарии одновременных вызовов интересны результаты: удаленные «невыполненные вызовы» достигают предела 2 вызовов ... тогда как локальные вызовы из 20 одновременных потоков достигают 18 «невыполненных вызовов» ! Ограничение 2 «удаленных» вызовов, по-видимому, «на процесс».

Спасибо

<?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>

1 Ответ

1 голос
/ 14 мая 2010

Это проблема клиента, System.Net контролирует, сколько исходящих TCP-соединений используется HttpWebRequest. По умолчанию 2 для конечной точки:

ServicePointManager.DefaultConnectionLimit = 10;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...