У нас возникают проблемы с настройкой netTcp для нашего веб-сервиса WCF, который размещается локально в IIS. Это на Windows 7 и IIS 7 с DotNet 4.0 (VS2012), брандмауэр отключен.Ошибка конфигурации WCF NetTcp
Мы сделали следующие шаги, чтобы настроить netTcp:
- В IIS, установите для сайта привязок net.tcp 808: * для Default Web Site
- В IIS для нашего веб-сервиса Включенные протоколы «не HTTP, net.Tcp» (без пробелов)
- Проверенно net.Tcp адаптер прослушивателя и net.Tcp порта файлообменника работают (переработаны их, а)
Теперь, когда мы бежим NETSTAT -ona мы делаем не вижу листинг для 127.0.0.1:808 - должен ли мы ???
Вот мой Web.config:
<system.web>
<customErrors mode="Off"></customErrors>
<compilation debug="true" targetFramework="4.0"></compilation>
<identity impersonate="false" />
</system.web>
<system.serviceModel>
<diagnostics>
<messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false"
logMessagesAtTransportLevel="false" />
</diagnostics>
<bindings>
<netTcpBinding>
<binding name="XxxxxxxCommonServiceBinding" />
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="XxxxxxxCommonService_Behavior" name="CS.WebService.Xxxxxxx.Common.XxxxxxxCommonService">
<endpoint address="net.tcp://localhost:808/CS.WebService.Xxxxxxx.Common.XxxxxxxCommonService/XxxxxxxCommonService.svc" binding="netTcpBinding"
bindingConfiguration="XxxxxxxCommonServiceBinding" name="XxxxxxxCommonNetTcpBinding"
contract="CS.ServiceContracts.Xxxxxxx.Common.IXxxxxxxCommonService" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="XxxxxxxCommonService_Behavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
</serviceHostingEnvironment>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
А вот App.config:
<system.serviceModel>
<client>
<endpoint name="CS.WebService.Xxxxxxx.Common.XxxxxxxCommonService"
address="net.tcp://localhost/CS.WebService.Xxxxxxx.Common.XxxxxxxCommonService/XxxxxxxCommonService.svc"
binding="netTcpBinding"
bindingConfiguration="XxxxxxxCommonNetTcpBinding"
contract="CS.ServiceContracts.Xxxxxxx.Common.IXxxxxxxCommonService"/>
</client>
</system.serviceModel>
Вот код в моем клиенте, где я пытаюсь вызвать службу:
var endPoint = new EndpointAddress(
"net.tcp://127.0.0.1:809/CS.WebService.Xxxxxx.Common.XxxxxxCommonService/XxxxxxCommonService.svc");
var binding = new NetTcpBinding { TransferMode = TransferMode.Streamed, SendTimeout = TimeSpan.MaxValue };
var channel = new ChannelFactory<IXxxxxxCommonService>(binding, endPoint);
var proxy = channel.CreateChannel()
var request = new GetDataRequest();
var response = proxy.GetData(request);
В этот момент мы получаем следующую ошибку:
Не удалось подключиться к net.tcp: //127.0.0.1: 809/CS.WebService.Xxxxxx.Common.XxxxxxCommonService/XxxxxxCommonService.svc. Попытка подключения продолжалась в течение 00:00:00. Код ошибки 10061 TCP: соединение не может быть выполнено, потому что целевой компьютер активно отклонил его 127.0.0.1:809.
Если изменить порт в коде и WebConfig до 808, мы получаем следующую ошибку:
Там не было никакой конечной точки прослушивания в net.tcp: //127.0.0.1/CS.WebService.Xxxxxx.Common. XxxxxxCommonService/XxxxxxCommonService.svc, который может принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Дополнительную информацию см. В InnerException, если имеется. (обратите внимание, не было внутреннего исключения)
Так что мне кажется, что, поскольку netstat -ona не показывает 127.0.0.1:808, что у меня нет надлежащего настроения. Но снова службы Net.Tcp работают и переработаны, и я считаю, что IIS правильно настроен, поэтому не уверен, куда обратиться.
Похоже, что вы настроили трассировку WCF.Я бы удостоверился, что и клиент, и служба включены для трассировки и запуска с файла трассировки клиента, см., Где выходят исключения. Также попробуйте запустить [простой пример netHttpBinding] (http://msdn.microsoft.com/en-us/library/ms752250.aspx) и сравнить рабочую конфигурацию с вашей конфигурацией. –