Существующее соединение было принудительно закрыто удаленным хостом с помощью WCF - PullRequest
8 голосов
/ 18 мая 2011

У нас есть настройка wcf pub / sub, использующая надежные сеансы через netTcpBinding, и на одном компьютере, где и служба публикации, и служба подписки размещаются в консольных приложениях, мы получаем вышеуказанную ошибку.Эта машина находится в рабочей группе.В другом месте мы развернули машину в домене, и она работает нормально.Мои знания о wcf несколько ограничены, и это было только что передано мне, поэтому, пожалуйста, будьте терпеливы.Кто-нибудь есть какие-либо советы о том, как решить эту ошибку?

Ниже приведено полное исключение:

System.ServiceModel.CommunicationException Соединение с сокетом было прервано.Это может быть вызвано ошибкой обработки вашего сообщения или превышением тайм-аута приема удаленным хостом, или проблемой основного сетевого ресурса.Тайм-аут локального сокета был «10675199.02: 48: 05.4775807».
в System.ServiceModel.Channels.SocketConnection.EndRead () в System.ServiceModel.Channels.DelegatingConnection.EndRead () в System.ServiceModel.Readction.Ed () в System.ServiceModel.Channels.ConnectionStream.ReadAsyncResult.HandleRead () в System.ServiceModel.Channels.ConnectionStream.ReadAsyncResult.OnAsyncReadComplete (состояние объекта) в System.ServiceModel.Cerne.ConnectionTaceTackStateTech ().Channels.SocketConnection.в System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UInt32 errorCode, UInt32 numBytes, NativeOverlapped * pOVERLAP) Внутреннее исключение:
System.Net.Sockets.SocketException
Существующее соединение было принудительно закрыто удаленным хостом
в System.ServiceModel.Channels.SocketConnection.EndRead () в System.ServiceModel.Channels.DelegatingConnection.EndRead () в системе.ServiceModel.Channels.ExecuteCallback () в System.ServiceModel.Channels.SocketConnection.FinishRead () в System.ServiceModel.Channels.SocketConnection.AsyncReadCallback (булево значение haveResult, ошибка Int32, int32 bytesRead) в System.ServiceModeled.UIUI.UI.UI.UI.UI.UI.UI.UI.UI.UI.UI., UInt32 bytesRead, NativeOverlapped * nativeOverlapped) в System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UInt32 errorCode, UInt32 numBytes, NativeПерекрытый * pOVERLAP)

Моя конфигурация привязки выглядит следующим образом:

<netTcpBinding>
    <binding name="NetTcpBinding_ISubscriptionService"
             closeTimeout="00:01:00"
             openTimeout="00:01:00"
             receiveTimeout="00:10:00"
             sendTimeout="00:01:00"
             transactionFlow="false"
             transferMode="Buffered"
             transactionProtocol="OleTransactions"
             hostNameComparisonMode="StrongWildcard"
             listenBacklog="10"
             maxBufferPoolSize="524288"
             maxBufferSize="65536"
             maxConnections="10"
             maxReceivedMessageSize="65536">
        <readerQuotas maxDepth="32"
                      maxStringContentLength="8192"
                      maxArrayLength="524288"
                      maxBytesPerRead="4096"
                      maxNameTableCharCount="16384" />
        <reliableSession ordered="true"
                         inactivityTimeout="00:10:00"
                         enabled="true"/>
        <security mode="Transport"
                  transport=""
                  clientCredentialType="Windows"
                  protectionLevel="EncryptAndSign"
                  message=""/>
    </binding>
</netTcpBinding>

Конечная точка:

<endpoint address="net.tcp://localhost:8000/SubscriptionService"
          binding="netTcpBinding" 
          bindingConfiguration="NetTcpBinding_ISubscriptionService" 
          contract="SubscriptionService.ISubscriptionService" 
          name="NetTcpBinding_ISubscriptionService" />

Ответы [ 2 ]

3 голосов
/ 24 мая 2011

Хорошо, я выяснил, в чем моя проблема.

Служба, к которой подключалось клиентское приложение, имела mxConnection 10. Мы также использовали SecureMessaging и имели listenBacklog 1. Измененные maxConnections до 100 и listBacklog до 200, и все работает нормально.

2 голосов
/ 02 декабря 2011

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

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