Итак, вот мой App.config:
<?xml version="1.0"?>
<configuration>
<runtime>
</runtime>
<system.serviceModel>
<diagnostics performanceCounters="Default" />
<bindings />
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
<endpointBehaviors>
<behavior name="CrossDomainServiceBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="AService.AServBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyService.MyServiceBehavior" name="MyService.MyServ">
<endpoint address="MyService" behaviorConfiguration="" binding="netTcpBinding" contract="AService.IAServ" isSystemEndpoint="false" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Как видите, в этом нет ничего особенного. Я просто хочу создать простой сервис с привязкой tcp и возможностью передачи метаданных. У меня был успех с тем же, используя basicHttpBinding
, и все шло хорошо.
Вот код, который создает экземпляр службы с базовым адресом:
Console.WriteLine("net.tcp://" + _bindAddress + "/");
ServiceHost myserviceHost = new ServiceHost(typeof(MyService), new Uri(String.Concat("net.tcp://", _bindAddress, "/")));
myserviceHost.Open();
_bindAddress
- это строка из XML-файла конфигурации пользовательской службы. Я пытаюсь привязать службу к внутреннему сетевому интерфейсу по IP-адресу 172.19.0.102:8733
. Затем я пытаюсь получить метаданные службы с помощью WcfTestClient с адреса 127.0.0.1:8733
на машине службы, и все в порядке. Но затем я пытался получить метаданные службы на целевом удаленном компьютере через Интернет и получил TCP error with code 10051
.
Моя цель - заставить сервис работать и публиковать метаданные через Интернет для любого клиента. Там нет проблем с брандмауэрами и другими сетевыми вещами. Похоже, мне нужны некоторые изменения конфигурации, чтобы разрешить метаданные для общего доступа к сервису.
Заранее спасибо!
РЕДАКТИРОВАНИЕ ПОЧТЫ:
Вот мои попытки:
1) Служба настроена для привязки на 172.19.0.102:8733
.
A. Тестовый клиент WCF пытается получить метаданные на размещенном компьютере с адреса net.tcp://127.0.0.1:8733/
, с ошибкой TCP error code 10061
.
Б. На той же машине Клиент WCF пытается получить метаданные из net.tcp://172.19.0.102:8733
, и он работает нормально.
C. WCF Test Client пытается получить метаданные на другом компьютере в локальной сети с адреса net.tcp://192.168.1.2:8733/
(это IP-адрес компьютера службы), выдает ошибку TCP error code 10061
.