2011-12-15 4 views
0

Я начала моей службы WCF, как это:WCF начать net.tcp обслуживание через Интернет

host = new ServiceHost(typeof(Host), new Uri("net.tcp://127.0.0.1:40000")); 
host.AddServiceEndpoint(typeof(IHost), new NetTcpBinding(), ""); 
host.Open(); 

и клиент приложения подключиться к нему:

IProxy proxy = new DuplexChannelFactory<IProxy>(callback, new NetTcpBinding(), new EndpointAddress("net.tcp://127.0.0.1:40000")).CreateChannel(); 

Он отлично работает. Я могу подключиться к серверу и обмениваться данными. Вопрос в том, как я могу запустить этот сервис (сервер), чтобы компьютеры из-за пределов моей сети могли подключаться к нему через интернет?

ответ

0

Убедитесь, что нет персонального межсетевого экрана, если вы находитесь за маршрутизатором/прокси-сервером, убедитесь, что перенаправление портов включено или вы устанавливаете свой сервер как DMZ. Если у сервера есть динамический IP-адрес, может быть хорошей идеей назначить его статическим, поэтому перезагрузка компьютера (по какой-либо причине) не испортит настройки на более позднюю дату.

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

2

Вам необходимо изменить IP-адрес от loopback (127.0.0.1) на внешний IP-адрес (найти его через www.whatismyip.com).

Затем, если вы находитесь за брандмауэром, вам необходимо разрешить порт 40000. И если вы находитесь за маршрутизатором, вам нужно переслать порт 40000 на локальный IP-адрес (откройте командную строку и введите ipconfig - вы получите его там).

После этого вам нужно будет изменить строку соединения клиента с внешним IP-адресом.

Смежные вопросы