app.config моего сервисаСуществующее соединение было принудительно закрыто удаленным узлом
<system.serviceModel>
<client>
<endpoint name="DataLocal" address="net.tcp://SomeAddress" binding="netTcpBinding" contract="ISomeContract" bindingConfiguration="TcpCustomSecurity" behaviorConfiguration="SecureBehaviorName">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
<services>
<service name="SomeService">
<host>
<baseAddresses>
<add baseAddress="http://SomeService" />
<add baseAddress="net.tcp://SomeService" />
</baseAddresses>
</host>
<endpoint name="SomeService_Normal" address="Secure" binding="netTcpBinding" contract="ISomeService" bindingConfiguration="TcpNormal"/>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="TcpNormal" transferMode="Buffered" receiveTimeout="24.20:31:23.6470000">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="None" />
</binding>
<binding name="TcpCustomSecurity" transferMode="Buffered" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="24.20:31:23.6470000" sendTimeout="00:01:00" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="SecureBehaviorName">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"/>
</serviceCertificate>
</clientCredentials>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
Ниже приведены высказывания стека для ошибки я получаю ..
> System.dll!System.Net.Sockets.Socket.Send(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags) + 0x5a bytes
System.ServiceModel.dll!System.ServiceModel.Channels.SocketConnection.Write(byte[] buffer, int offset, int size, bool immediate, System.TimeSpan timeout) + 0xa7 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.SocketConnection.Write(byte[] buffer, int offset, int size, bool immediate, System.TimeSpan timeout, System.ServiceModel.Channels.BufferManager bufferManager) + 0x34 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.BufferedConnection.WriteNow(byte[] buffer, int offset, int size, System.TimeSpan timeout, System.ServiceModel.Channels.BufferManager bufferManager) + 0x90 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.BufferedConnection.Write(byte[] buffer, int offset, int size, bool immediate, System.TimeSpan timeout, System.ServiceModel.Channels.BufferManager bufferManager) + 0x47 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend(System.ServiceModel.Channels.Message message, System.TimeSpan timeout) + 0x115 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.OutputChannel.Send(System.ServiceModel.Channels.Message message, System.TimeSpan timeout) + 0x81 bytes
System.ServiceModel.dll!System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(System.ServiceModel.Channels.Message message, System.TimeSpan timeout) + 0x154 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.ServiceChannel.Call(string action, bool oneway, System.ServiceModel.Dispatcher.ProxyOperationRuntime operation, object[] ins, object[] outs, System.TimeSpan timeout) + 0x206 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(System.Runtime.Remoting.Messaging.IMethodCallMessage methodCall, System.ServiceModel.Dispatcher.ProxyOperationRuntime operation) + 0x59 bytes
System.ServiceModel.dll!System.ServiceModel.Channels.ServiceChannelProxy.Invoke(System.Runtime.Remoting.Messaging.IMessage message) + 0x65 bytes
mscorlib.dll!System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(ref System.Runtime.Remoting.Proxies.MessageData msgData, int type) + 0xee bytes
// Первый вызов службы в вышеуказанном стеке ...
служба Поведение заключается в следующем: [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single)]
Ошибка произошла после нескольких часов постоянного тестирования ... не смог воспроизвести его во время отладки ..
EDIT:
Я получил результаты трассировки благодаря Dejan ...
на первое вхождения ошибки я получаю это сообщение: Максимального количества ожидающих соединений было достигнуто.
на второе я получаю вхождение этого сообщения: Системы ударила предел, установленный для дросселя «MaxConcurrentConnections'.Limit для этого дроссель был установлен на значение 200.Throttle можно изменить с помощью атрибута„maxConcurrentSessions“в сервисном дросселеме элемент.
Так что для второго сообщения я сделал это:
и назначил такое поведение службы к службе. мне нужно установить maxConnections на привязку для первого сообщения. Кроме того, что является основной причиной проблемы, сначала один или второй или оба. Потому что в последующих сообщениях я всегда получаю второе сообщение.
Пожалуйста, обратитесь к обновлению моего app.config, чтобы избежать такого сценария.
UPDATE
Я получил результаты по отслеживанию ...
на первом я получаю вхождение это сообщение: Максимальное количество ожидающих соединений было достигнуто.
на второе я получаю вхождение этого сообщения: Система ударила предел, установленный для газа «MaxConcurrentConnections'.Limit для этого дросселя был установлен на значение 200.Throttle можно изменить с помощью атрибута„maxConcurrentSessions“в элементе дроссельной службы ,
Так что для второго сообщения я сделал это:
<serviceBehaviors>
<behavior name="tcpNormalBehavior">
<serviceThrottling maxConcurrentSessions="800" maxConcurrentInstances="800" maxConcurrentCalls="200" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
и назначил такое поведение службы к службе. Мне нужно установить maxConnections для привязки для первого сообщения. Кроме того, это основная причина проблемы, первая или вторая одна или обе. Потому что в последующих сообщениях я всегда получаю второе сообщение.
Просим руководствоваться.
Попробуйте выполнить обработку или регистрацию исключений в службе – VJAI
Я обновил свой ответ ниже. –
Спасибо, Деян. мы не можем закрыть прокси-сервер, поскольку мы используем MEF и используем тот же самый прокси-сервер в приложении. Повысить maxConcurrentSessions не является хорошим решением? –