У меня есть хост службы WCF в IIS8, и я хочу использовать привязку net.tcp.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 I получите следующую ошибку:
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.
Любые идеи? Спасибо и извините за мой плохой английский
EDIT:
Я сделал консольное приложение работает на 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 работает с той же услугой через Интернет? локально работает. Спасибо
Но если у меня есть место в «HTTP, net.tcp» не должны нарушаться даже для местных звонков? –
Я рассмотрел IIS, и у меня все в порядке. Проблема в том, что если я вызываю службу с того же компьютера, на котором работает IIS8 (localhost), все работает нормально, но когда я вызываю ту же службу за пределами машины, которая запускает IIS, я получаю это error –
Похоже, что брандмауэр блокирует вас тогда. – Middas