Проблемы с хостинг служб WCF в IIS (использования) на значение nettcp привязки?
Я создал простую службу WCF и разместил ее в IIS, создав новый веб-сайт. В файле Web. config я предоставляю привязки для http и net tcp. Я создал консольный клиент и добавил ссылку на службу. Он генерирует две привязки в конфигурации клиента - для http и для tcp. Когда я пытаюсь вызвать службу с помощью tcp, я получаю эту ошибку -
Необработанное исключение типа ' System.Сервис-модель.EndpointNotFoundException ' произошло в mscorlib.dll дополнительная информация: в net.tcp://computername/Service.svc не было конечной точки, прослушивающей это сообщение. Это часто вызвано неправильным адресом или действием SOAP.
когда я запускаю с помощью HTTP endpoint(означает, что я использую http endpoints в своем клиенте), он работает нормально.
Мой веб-сайт Web.config файл выглядит следующим образом
<system.serviceModel> <bindings> <netTcpBinding> <binding name="NewBinding0" portSharingEnabled="true"> <security mode="None" /> </binding> </netTcpBinding> </bindings> <services> <service behaviorConfiguration="My" name="WCFServiceOM.Service1"> <!-- the service name must match the configuration name for the service implementation. --> <endpoint address="" binding="basicHttpBinding" contract="WCFServiceOM.IService1"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <endpoint binding="netTcpBinding" bindingConfiguration="NewBinding0" contract="WCFServiceOM.IService1" /> <endpoint address="mexOM" binding="mexTcpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:8087/Service1" /> <add baseAddress="http://localhost:7777/Service1"/> </baseAddresses> </host> </service> </services> <behaviors> <endpointBehaviors> <behavior name="webBehanior"> <webHttp/> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="My"> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors>
И мой клиент App. Config выглядит так
<configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> </startup> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService1" /> </basicHttpBinding> <netTcpBinding> <binding name="NetTcpBinding_IService1"> <security mode="None" /> </binding> </netTcpBinding> </bindings> <client> <endpoint address="http://computername:7777/Service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" /> <endpoint address="net.tcp://computername/Service.svc" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IService1" contract="ServiceReference1.IService1" name="NetTcpBinding_IService1" /> </client> </system.serviceModel>
пожалуйста помочь. Заранее большое вам спасибо
Что я уже пробовал:
Я использую ОС Windows 10, установлены IIS 10.0 и WPAS\WAS (служба активации процессов Windows). Я уже включил\проверил активацию HTTP, активацию TCP .Net framework в функциях Windows. И измененные параметры сервера IIS для включения сетевого протокола TCP.
Richard Deeming
Если вы размещаете сервер в IIS, номер порта в конфигурационном файле игнорируется. Клиент должен подключиться, используя номер порта, настроенный в привязках IIS для сайта.
londhess
в конфигурации вашего клиента я не вижу номера порта при привязке tcp.
в <адрес конечной точки="нет.протокол TCP://имя_компьютера:8087/услуг.ВПВ" привязки="привязки nettcpbinding"
bindingconfiguration="NetTcpBinding_IService1" contract= " ServiceReference1.Файл iservice1"
имя="NetTcpBinding_IService1" /&ГТ;