Как мне разместить службу wcf в интернете? - PullRequest
5 голосов
/ 11 ноября 2009

Вероятно, это основная проблема с сетью, но я новичок в этом деле и просто не знаю ответа.

Я написал службу и клиент wcf. Я могу использовать одну из привязок http и заставить службу работать корректно, если в качестве адреса конечной точки указать сетевой IP-адрес компьютера и запустить клиент и сервер с одного компьютера. Теперь я хочу иметь возможность подключаться к этой услуге с другого компьютера через Интернет. Очевидно, что это не работает, когда я использую свой сетевой IP-адрес в этом сценарии, но простое добавление широкополосного IP-адреса моего маршрутизатора, похоже, тоже не помогает. Я просто пропускаю порт брандмауэра, который мне нужно открыть, или я пытаюсь сделать что-то, что не должно быть возможно?

Ответы [ 5 ]

2 голосов
/ 11 ноября 2009

Если вы хотите, чтобы пользователи из Интернета могли подключаться к вашему сервису, вам нужно учесть несколько моментов:

  • привязка: наименьшим общим знаменателем является basicHttpBinding, который представляет собой SOAP 1.1 и практически не имеет дополнительных функций - как веб-сервисы ASMX. Почти каждый может подключиться к этому. Для более продвинутых клиентов вы также можете указать конечную точку wsHttpBinding в своем сервисе

  • безопасность: как (если вообще) вы хотите защитить доступ к своему веб-сервису? У вас есть имя пользователя / пароль, которые абоненты должны предоставить? Ознакомьтесь с Руководством по безопасности WCF , где приведено множество информационных битов по различным сценариям безопасности

  • аутентификация вашего сервиса: как правило, вы должны стремиться сделать так, чтобы ваш сервис аутентифицировался для остального мира - для этого требуется сертификат сервера и активация защищенного соединения (сообщения подписаны + зашифрованы) по проводам

  • убедитесь, что ваши конечные точки обслуживания доступны из Интернета, через все брандмауэры и прокси-серверы и все :-)

Надеюсь, это немного поможет!

1 голос
/ 11 ноября 2009

Вам нужно настроить переадресацию портов на вашем роутере. Возможно, кто-то на ServerFault или SuperUser сможет вам помочь. Или даже поиск в Google теперь, когда вы знаете, как он называется. Инструкции будут отличаться в зависимости от маршрутизатора. Порт, который вам нужно переадресовать, будет тем портом, который вы выбрали в файле конфигурации WCF.

0 голосов
/ 18 сентября 2017

Я нашел хорошую статью, и она прекрасно работает, выполнив следующие основные шаги:

1-Сначала вы должны создать службу WCF.

2 - добавьте приложение в IIS, укажите псевдоним для виртуального каталога и укажите путь с локального диска.

3-Убедитесь, что пул приложений по умолчанию установлен на .NET CLR V4.0.

4-test ваш сервис WCF успешно работает на localhost.

5 - Для доступа к нему через локальную сеть (LAN) вы должны отключить брандмауэр для вашей частной сети.

6 - попробуйте использовать ngrok.com, вы получите временный URL-адрес для использования через Интернет для доступа к вашему LocalHost в любом месте.

Тогда все будет хорошо.

Для получения дополнительной информации проверьте следующую ссылку:

https://www.codeproject.com/Tips/813650/Host-WCF-on-LocalHost-and-access-via-Internet

0 голосов
/ 03 ноября 2012

Вот простое решение.

  1. Я предполагаю, что вы создали работающее приложение WCF и размещены на IIS.

  2. Следующее, что нужно сделать, - это просмотреть приложение из IIS. Это даст вам URL в адресной строке что-то вроде: http://localhost/myservice/service.svc

  3. Далее перейдите на www.whatismyip.com. это даст вам WAN IP вашей системы (скажем, 45.34.56.200).

  4. Замените URL, полученный на шаге 2, на: http://45.34.56.200/myservice/service.svc

  5. Теперь вы можете использовать этот URL в любой точке мира, чтобы использовать ваши услуги.

0 голосов
/ 11 ноября 2009

Я размещаю службы WCF через IIS, но мне понадобилось много времени, чтобы понять, как это сделать. На данный момент я помещаю файлы на веб-сервер и включаю веб-обмен в корневой папке. Затем вы можете назначить их соответствующему пулу приложений в IIS и добавить ссылку на службу для любых клиентских проектов, используя URL-адрес wsdl.

Я не уверен, что это лучший способ сделать это, но это единственный способ, который я до сих пор работал.

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