2016-03-23 2 views
0

Я уже несколько дней простаивал по этой проблеме. Я знаю основы wcf. Управление существующим кодом и столкнулись с этой проблемой. Я принимал приложение у нескольких моих клиентов без каких-либо проблем, и сайт клиента wcf смог связаться с сервисом, за исключением того, что эта служба wcf была не стартером.SocketException произошло Существующее соединение было принудительно закрыто удаленным хостом ErrorCode = 10054

Это сервис wcf, обслуживаемый IIS. У нас есть сертификат CA. Я могу проверить сертификат на клиенте, поэтому верю, что он импортирован, импортированный надлежащим образом в доверенных издателях mmc.

Клиентское приложение wcf может создавать экземпляр объекта wcf. Но когда я вызываю простую функцию, которая возвращает только «истину» (для подтверждения доступности wcfobject), она выдает исключение.

 EndpointAddress myEndpointAdd = new EndpointAddress(new Uri(practiceUrl), 
              EndpointIdentity.CreateDnsIdentity(dnsIdentity)); 
     DataServiceClient wcfObject = new DataServiceClient("wsHttpEndPoint", myEndpointAdd); 

     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).MaxReceivedMessageSize = 2147483647; 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).ReaderQuotas.MaxArrayLength = 2147483647; 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).MaxBufferPoolSize = 2147483647; 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).OpenTimeout = TimeSpan.FromMinutes(10); 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).ReceiveTimeout = TimeSpan.FromMinutes(5); 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).SendTimeout = TimeSpan.FromMinutes(10); 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).ReaderQuotas.MaxBytesPerRead = 2147483647; 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).ReaderQuotas.MaxDepth = 2147483647; 
     ((WSHttpBinding)wcfObject.ChannelFactory.Endpoint.Binding).ReaderQuotas.MaxStringContentLength = 2147483647; 

     wcfObject.IsClientRunning(); //service should return true if all goes well 

Клиент открыл брандмауэр для моей машины IP и из моего браузера, я могу увидеть целевую страницу сервиса, установленного в клиенте.

<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpBindingSettings" receiveTimeout="00:20:00" closeTimeout="00:20:00" openTimeout="00:20:00" sendTimeout="00:20:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="Message"> 
     <message clientCredentialType="Certificate" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

Я также установил средство просмотра трассировки службы, но это не показывает никаких ошибок. TraceLog

ответ

0

Проблема была связана с медленным подключением к Интернету, и при первоначальном процессе установления связи был завершен процесс аутентификации сертификата.