У меня общая проблема с WCF и привязкой net.tcp. Я видел все сообщения на stackoverflow также googling тоже.Не удается найти конечную точку net.tcp в добавлении ссылки на службу в WCF?
Основная проблема, что я не могу добавить ссылку на сервис для моего клиента. я получаю сообщение об ошибке:
Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].
Я использую IIS 7. Я проверил, не HTTP.I добавил на веб-сайт в Enable Protocols Net.Tcp, также добавлены net.tcp к привязок. Если я нажму на адрес (http) мой адрес. Я вижу свою папку с приложением WCF, и если я выбираю файл SVC я вижу нормальный адрес:
svcutil.exe Net.Tcp: //MYADDRESS/Service.svc/mex
Я предполагаю, что я правильно настройте свой IIS, если я увижу этот URL!
Но проблема начинается, когда я пытаюсь добавить ссылку на клиента. Только то, что я вижу http endpoints и нет net.tcp.
Вот мой конфиг на службу:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<services>
<service name="MYSERVICE.SERVICE" behaviorConfiguration="behavior1">
<endpoint
binding="netTcpBinding"
contract="MYSERVICE.ISERVICE">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:60745/MYSERVICE/SERVICE/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behavior1">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="netTcpBinding" scheme="net.tcp" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Примечание: мой веб-сайт начинается от 60745 адреса, но для net.tcp связывания в IIS Я добавил 60746: * Также я открыл правила Inbound Outbound для обоих портов ,
Спасибо!
У вас есть функция «Активация подключения к Windows Communication Foundation без HTTP» включена в ваших функциях Windows на вашем сервере IIS? –
есть. Я включил его. – user1711993
Если ваша программа .NET 4.5, вы активизировали активацию TCP в .NET Framework 4.5 Advanced Services (если у вашей ОС, на которой работает IIS, есть) –