У меня проблема с ответом от сервера.Когда операция на стороне сервера занимает более одной минуты, клиент не может получить ответ, но в журналах говорится, что ответ отправлен с сервера.Все хорошо, когда операция на стороне сервера занимает менее одной минуты.
Конфигурация клиента:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior0">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<clientCredentials />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_B2BServices" closeTimeout="00:10:00"
openTimeout="00:01:00" receiveTimeout="00:21:00" sendTimeout="00:21:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Mtom" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:15:00"
enabled="true" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address=https://.../MatrixConnector/Services.svc
behaviorConfiguration="NewBehavior0"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_B2BServices"
contract="MatrixServiceReference.B2BServices" name="WSHttpBinding_B2BServices">
<identity>
<dns value="..." />
</identity>
</endpoint>
</client>
</system.serviceModel>
Сторона сервера:
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
maxMessagesToLog="2147483647" maxSizeOfMessageToLog="2147483647" />
<endToEndTracing propagateActivity="true" activityTracing="true"
messageFlowTracing="true" />
</diagnostics>
<bindings>
<wsHttpBinding>
<binding name="WsHttpBinding"
closeTimeout="00:21:00" openTimeout="00:02:00" receiveTimeout="00:30:00" sendTimeout="00:30:00"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Mtom">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession enabled="true" inactivityTimeout="00:20:00" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" />
<message clientCredentialType="UserName" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehavior" name="mediaSens.Services.B2BServices">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="WsHttpBinding"
contract="mediaSens.Services.IB2BServices">
<identity>
<dns value="..." />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress=http://.../ />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="mediaSens.Services.CustomUserNameValidator, mediaSens.Services" />
</serviceCredentials>
<serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="2000"
maxConcurrentInstances="1500" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="1" />
</system.serviceModel>
А теперья получаю сообщение об ошибке на стороне сервера через 30 минут:
The communication object, System.ServiceModel.Channels.ReplyChannel, cannot be used for communication because it has been Aborted.
Все свойства настроены выше 20 минут, и клиент не может обрабатывать операции, которые занимают более одной минуты.Дополнительно я сделал:
client.InnerChannel.OperationTimeout = new TimeSpan(0, 30, 0);
... но результатов нет.
Я увеличил настройки пулов приложений: Ping Максимальное время отклика: 1140 с Предел времени выключения: 1200 с Pingпериод: 30 сек.
Я также отключил повторную настройку.Такое же поведение
Я пытался с выключенным relaybionSession, но ничего ...
РЕДАКТИРОВАТЬ. Я обнаружил, что клиент не может получить ответ через 90 секунд.Это значение по умолчанию для exececutionTime в IIS.Я увеличил это значение до 3600 секунд, отключил отладку, но клиент по-прежнему не может получить ответ после этого времени.Я создал сервер net.tcp и получил те же результаты, но в localhost такой проблемы нет.Я действительно смущен ...