Сделать сервис WCF доступным через Интернет - PullRequest
3 голосов
/ 26 февраля 2010

Я сделал сервис WCF. Я хочу, чтобы его клиент мог получить к нему доступ из любого места. Как я могу это сделать? Подробности:

  • Я хочу, чтобы он был размещен в Windows процесс, а не сайт.
  • Я использую привязку TCP.
  • Я почти ничего не знаю о веб-хостинге и т. Д.
  • Желательно не использовать IIS ...

Я нашел много рекомендаций в Интернете, но до сих пор не понимаю всех вещей. Подскажите пожалуйста, как это сделать поподробнее ...

Как я понимаю, необходимо сделать глобальный для конечной точки. Я настроил переадресацию портов в моем маршрутизаторе на порт 8000, но ... что дальше? Какой адрес я должен ввести в качестве адреса конечной точки? Теперь это localhost: 8000.

Ответы [ 6 ]

2 голосов
/ 26 февраля 2010

Вам понадобится публичный IP-адрес или доменное имя, как предложено выше. Узнайте, если он у вас уже есть, если нет, следуйте приведенным выше советам по настройке.

Для вашего хоста и клиента WCF вам понадобится конечная точка, которая выглядит следующим образом:

  • Хост: net.tcp: // localhost: portnum / servicename
  • Клиент: net.tcp: // publicipORdomainname: portnum / servicename

Вам необходимо убедиться, что ваш маршрутизатор направляет порт на хост-компьютер. От вопроса звучит так, будто вы сделали это правильно. Поскольку хост локальный, вам не нужно менять конечную точку, чтобы использовать общедоступный IP-адрес или имя домена. Клиенту необходимо разрешить вызов хосту, который находится на удаленном адресе, следовательно, нужен общедоступный IP-адрес.

1 голос
/ 26 февраля 2010

Вам не нужен IIS, вы можете самостоятельно размещаться, и он будет доступен через Интернет.

Обычно, когда вы самостоятельно размещаете приложение WCF, это сервер (как веб-сервер, такой как Apache или IIS).

Вот хороший сайт, на котором обсуждается, как подключить ваш собственный сервер к Интернету.

http://www.diywebserver.com/

Помните, что вы можете пропустить любые части, связанные с настройкой Apache, поскольку у вас уже есть сервер (ваше приложение WCF).

0 голосов
/ 13 мая 2014

Если ваша служба работает на IIS без каких-либо проблем, вам необходимо выполнить следующие шаги для доступа к этой службе через internet

Предположим:

Мое решение называется SearchServiceLibrary

Имя интерфейса: ISearch

Имя класса Поиск , и этот класс реализует интерфейс ISearch

Шаг 1: Если ваш компьютер находится за NAT, вам нужно перенаправить PORT , чтобы сообщить маршрутизатору, куда он должен отправлять полученные запросы на веб-службы.

Шаг 2: Чтобы указать Имя домена / IP-адрес Сервера в файле WSDL

Обновление или редактирование следующего тега в файле app.config

 <serviceMetadata httpGetEnabled="True" httpGetUrl="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic"/>

Шаг-3: Установить Расположение мыла в app.config file

Вам нужно добавить конечную точку в файл app.config, вы можете сделать это описательно или с помощью опции РЕДАКТИРОВАТЬ КОНФИГУРАЦИИ WCF

<service name="SearchServiceLibrary.Search">
                <endpoint    address="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic"   binding="basicHttpBinding"
          contract="SearchServiceLibrary.ISearch">
          <identity>
            <dns value="localhost" />
          </identity>
    </endpoint>

ИЛИ используя опцию РЕДАКТИРОВАТЬ КОНФИГУРАЦИИ WCF

enter image description here Это сработало идеально для меня.

0 голосов
/ 28 сентября 2011

вы не должны быть хостингом с localhost : 8000, потому что это будет доступно только на локальном компьютере. Переадресация портов не будет работать.

Вместо этого используйте сетевое имя машины или IP-адрес локальной сети.

0 голосов
/ 26 февраля 2010

вам нужно иметь публичный IP и доменное имя. Я бы предложил арендовать виртуальный сервер для вашей службы и разместить его в службе Windows.

0 голосов
/ 26 февраля 2010

Как я ответил в этой связанной ссылке SO , мое предложение основано на этом примере codeproject.com . Это работает хорошо.

...