Я уже несколько дней простаивал по этой проблеме. Я знаю основы 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>
Я также установил средство просмотра трассировки службы, но это не показывает никаких ошибок.