Не удалось получить метаданные с удаленной машины, но локально в порядке - PullRequest
1 голос
/ 27 октября 2011

Итак, вот мой 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.

1 Ответ

0 голосов
/ 27 октября 2011

Эта ошибка означает: Сеть недоступна и это, скорее всего, то, что действительно происходит. Ваш IP-адрес принадлежит диапазону частной сети, и эти адреса никогда не могут быть адресованы напрямую из Интернета / глобальной сети - они предназначены только для локального использования в локальной сети. Чтобы получить доступ к такому адресу через Интернет, вы должны настроить публично выставленный маршрутизатор / шлюз на прием соединения и переадресацию его на внутреннее устройство = переадресация NAT / порта и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...