Ошибка связи WCF net.tcp
Я создал службу WCF с привязкой net.tcp и смог добавить ссылку на службу в своем консольном приложении без ошибок.
После этого я пытаюсь самостоятельно разместить этот сервис в своем консольном приложении. Хост сервиса открывается, но когда я вызываю метод в сервисе с объектом ссылки сервиса, я получаю это исключение
'Не удалось подключиться к net.tcp: // localhost / Design_Time_Addresses / MyWCF ServiceLibrary/Service2/. Попытка подключения длилась в течение промежутка времени 00:00:02.0800000. Код ошибки TCP 10061: не удалось установить соединение, потому что целевая машина активно отказала ему в этом [::1]:808.'
Это мой код файла cs
Main method()
Service2Client sc2 = new Service2Client();
Uri baseaddress = new Uri("net.tcp://localhost:8732/Design_Time_Addresses/MyWCFServiceLibrary/Service2/");
ServiceHost serviceHost = new ServiceHost(typeof(Service2Client), baseaddress);
serviceHost.Open();
Console.WriteLine(sc2.GetData(124)); --> exception comes at this point
Console.ReadLine();
Это app.config в консольном приложении
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost/Design_Time_Addresses/MyWCFServiceLibrary/Service2/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IService2"
contract="ServiceReference2.IService2" name="NetTcpBinding_IService2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IService2" 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="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<!--<client>
<endpoint address="net.tcp://localhost:8732/Design_Time_Addresses/MyWCFServiceLibrary/Service2/"
binding="netTcpBinding" bindingConfiguration="NewBinding0" contract="MyWCFServiceLibrary.IService2"
name="endpointClient" />
<endpoint address="net.tcp://localhost/Design_Time_Addresses/MyWCFServiceLibrary/Service2/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IService2"
contract="ServiceReference2.IService2" name="NetTcpBinding_IService2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>-->
</system.serviceModel>
Окружающая среда: Vs2010
Может кто-нибудь, пожалуйста, помогите мне в этом.
3 ответа
Возможно, что:
1) брандмауэр блокирует запрос. Проверьте это.
2) убедитесь, что
- Адаптер прослушивателя Net.Tcp;
- Net.Tcp Port Sharing Service
работают (службы Windows)
Ваш клиентский конфиг имеет URL как
net.tcp://localhost/Design_Time_Addresses/MyWCFServiceLibrary/Service2/
тогда как ваш сервис включен
net.tcp://localhost:8732/Design_Time_Addresses/MyWCFServiceLibrary/Service2/
Номер PORT отсутствует в app.config элемента конечной точки клиента консольного приложения.
Причин может быть несколько, поскольку другие ответы могут решить проблему. Но в моем случае проблема решена после установки ожидающего обновления Windows.