У меня самый простой сервис WCF, который работает, когда размещается в IIS с использованием привязки basicHttp.У него есть один пустой метод с именем DoNothing, который не принимает параметров и возвращает void
void DoNothing ()
Однако я не могу заставить его работать при попытке разместить его в IIS с помощью net.tcp.
Я предполагаю, что это конфигурация, поскольку один и тот же сервисный код должен работать независимо от используемой привязки.
Я включил активацию без http.Я использую другой порт 12345, чтобы избежать любых конфликтов.Веб-сайт и служба настроены на использование привязки net.tcp.
Службы Net.Tcp ListenerAdaptor и Net.Tcp Port Sharing работают
Я могу получить метаданные для использования WcfTestClient для тестированиясервис.
Я получаю ошибку
Соединение с сокетом было прервано.Это может быть вызвано ошибкой обработки вашего сообщения или превышением тайм-аута приема удаленным хостом, или проблемой основного сетевого ресурса.Тайм-аут локального сокета был '00: 00: 59.8597984 '.
Внутреннее исключение
Существующее соединение было принудительно закрыто удаленным хостом
Я проверял все,Я попытался вызвать его удаленно и локально на виртуальной машине
. Я могу только думать, что это простая ошибка конфигурации или проблема безопасности.Виртуальная машина не находится в домене.Я полностью отключил брандмауэр на виртуальной машине.
У кого-то была такая же проблема, и у него есть разрешение.Или у кого-то есть очень простой (полный) пример того, как разместить службу net.tcp в IIS, где он может публиковать
Вот мой web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="PortSharingBinding" portSharingEnabled="true">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="SimpleNetTcpService.Service">
<endpoint address="net.tcp://192.168.0.2:12345/SimpleNetTcpService/Service"
binding="netTcpBinding" bindingConfiguration="PortSharingBinding"
contract="SimpleNetTcpService.IService" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>