(Пожалуйста, прочитайте комментарий, так как у меня есть исправление)
Привет,
Я создал службу WCF, которую я размещаю в IIS 7.5 в Windows 7, используя .net 4.0
Служба размещена как на http, так и на net.tcp.
Я протестировал свой сервис с помощью WcfTestClient, и он, кажется, работает корректно как через basicHttp, так и через netTcp.
Однако, когда я пытаюсь использовать эту службу через мой веб-сайт ASP.NET, я получаю сообщение об ошибке при попытке пройти через nettcp
Конечная точка моего клиента выглядит следующим образом
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Generic_HttpBinding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
<security mode="None"/>
<readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
</binding>
</basicHttpBinding>
<netTcpBinding>
<binding name="Generic_Binding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
<security mode="None"/>
<readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint name="EndPointHttp" address="http://localhost:43/Service/MyService.svc" binding="basicHttpBinding" bindingConfiguration="Generic_HttpBinding" contract="NameSpace.Services.Contracts.IService"></endpoint>
<endpoint name="EndPoint" address="net.tcp://localhost:42/Service/MyService.svc" binding="netTcpBinding" bindingConfiguration="Generic_Binding" contract="NameSpace.Services.Contracts.IService"></endpoint>
</client>
Теперь я вызываю службу точно так же, просто меняя имя конечной точки
var factory = new ChannelFactory<IService>(SuppliedEndpointName);
factory.Open();
var proxy = factory.CreateChannel();
var result = proxy.SomeServiceMethod();
Если я передам этот метод, BasicHttpBinding будет работать отлично.
Когда я перехожу на nettcp, я сразу получаю эту ошибку:
Исключение: соединение с сокетом было прервано. Это может быть вызвано ошибкой обработки вашего сообщения или превышением тайм-аута приема удаленным хостом, или проблемой основного сетевого ресурса. Тайм-аут локального сокета был '00: 01: 00 '.
Внутреннее исключение: существующее соединение было принудительно закрыто удаленным хостом
Код ошибки: 10054
Пожалуйста, кто-нибудь может мне помочь, это сводит меня с ума.
Я определенно установил функции активации WCF HTTP и активации NON HTTP.
Я настроил привязку на HTTP и net.tcp на разных портах.
Я установил в IIS мои включенные протоколы http, net.tcp.
Я отключил свой брандмауэр.
Я запустил aspnet_regiis -i для .net 4.0
HELP!
Я наконец-то обнаружил, что смена режима безопасности на транспорт устраняет проблему.
Однако в моем сервисе для него установлен режим безопасности none.
Так почему мой клиент работает только с включенным режимом безопасности?