Служба WCF за брандмауэром - как настроить переадресацию портов? - PullRequest
1 голос
/ 24 декабря 2010

Я только начинаю программировать в WCF. Я установил собственный тестовый веб-сервис на своем рабочем компьютере, который находится за брандмауэром; это на http://localhost:8000/MyTestService. Я могу получить доступ к странице сервиса через браузер; все работает нормально.

Теперь я хочу получить доступ к этой услуге с моего домашнего компьютера, который находится в другой сети. У меня есть динамический DNS (назовите его mydomain.dyndns.org), настроенный для указания на мой рабочий маршрутизатор. Протестировали, dyndns указывает на правильный адрес.

Теперь я установил тестовое приложение на своем домашнем компьютере для подключения к своему веб-сервису. Поэтому я настроил NAT для пересылки запросов через порт 8000 на мой рабочий компьютер с тем же номером порта.

На моем домашнем компьютере я сейчас открываю браузер и перехожу на http://mydomain.dyndns.org:8000/MyTestService. Ничего не делает.

Очевидно, что мне не хватает чего-то действительно фундаментального в NAT и переадресации портов ... но, как я уже сказал, я немного новичок в этом аспекте программирования, и я очень ценю некоторые рекомендации здесь!

Ответы [ 2 ]

4 голосов
/ 24 декабря 2010

Вы видите ошибку или пустую страницу? Можете ли вы проверить canyouseeme.org с компьютера за брандмауэром, что порт действительно открыт? Можете ли вы проверить с помощью таких инструментов, как sysinternals tcpview, что попытка подключения достигает этого компьютера, а не только маршрутизатора?

2 голосов
/ 22 февраля 2013

У меня была такая же проблема.

после хорошей помощи от этого топика. http://www.codeproject.com/Questions/140317/WCF-services-and-Windows-Firewall. Моя служба WCF хорошо работала в локальной сети даже при активном брандмауэре.

Но он не был доступен через Интернет. После переадресации порта я смог увидеть описание сервиса. но я не мог его использовать.

Эта статья http://gavinmckay.wordpress.com/2009/03/24/howto-fix-wcf-host-name-on-iis/ указывает мне правильное направление. Служба видна, но соединения с вашим веб-сервером не будут установлены, поскольку WSDL указывает на неопубликованное имя сервера и ваш клиент не сможет туда попасть.

В моем случае a мне нужно изменить самодостаточную локальную конечную точку wcf на общедоступную.

        1 Create a URI to serve as the base address.
        Uri baseAddress = new Uri("http://publicdomain.com:8000/GettingStarted/");
        // Step 2 Create a ServiceHost instance
        ServiceHost selfHostRemote = new ServiceHost(typeof(MyService), baseAddress);

Удачи

...