У меня есть узел службы WCF в IIS8, и я хочу использовать привязку net.tcp.
У меня есть эта конфигурация:
Web.config:
<service behaviorConfiguration="MyBehavior"
name="DecryptService.EmailCenterDecryptTCP">
<host>
<baseAddresses>
<add baseAddress="net.tcp://XX.XX.XX.XX:808/VirtualFolder/Service.svc" />
</baseAddresses>
</host>
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="portSharingBinding"
name="MyServiceEndpoint"
contract="ServiceNamespace.IService">
</endpoint>
<endpoint address="mextcp"
binding="mexHttpBinding"
bindingConfiguration=""
name="MyServiceMexTcpBidingEndpoint"
contract="IMetadataExchange" />
</service>
Когда я пытаюсь использовать службу на том же компьютере, что и IIS8, со следующей конфигурацией работает нормально:
<client>
<endpoint address="net.tcp://YY.YY.YY.YY:808/VirtualFolder/Service.svc"
binding="netTcpBinding" bindingConfiguration="MyServiceEndpoint"
contract="ServiceReference1.IService" name="MyServiceEndpoint" />
</client>
YY.YY.YY.YY — это локальный IP-адрес машины, но когда я пытаюсь использовать службу на другой машине, YY.YY.YY.YY меняется на внешний IP-адрес машины (ZZ.ZZ.ZZ.ZZ), на которой работает IIS8. Я получаю следующую ошибку:
There was no endpoint listening at net.tcp://ZZ.ZZ.ZZ.ZZ/VirtualFolder/Service.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
Любые идеи? Спасибо и извините за мой плохой английский
ИЗМЕНИТЬ:
Я сделал консольное приложение, на котором запущен ServiceHost, заменяющий IIS, и с этой конфигурацией оно работает через Интернет.
var svh = new ServiceHost(typeof (Service));
svh.AddServiceEndpoint(typeof (ServiceNamespace.IService), new NetTcpBinding(SecurityMode.None), "net.tcp://serverLocalIp:808");
svh.Open();
Console.WriteLine("SERVER - Running...");
stopFlag.WaitOne();
Console.WriteLine("SERVER - Shutting down...");
svh.Close();
Console.WriteLine("SERVER - Shut down!");
Есть идеи, что не так с тем, что IIS запускает ту же службу через Интернет? локально работает. Спасибо