WCF слушает базовый адрес anyip - PullRequest
3 голосов
/ 08 августа 2010

Я хочу, чтобы у моего сервисного хоста был базовый адрес любого IP, поэтому я попробовал это

new ServiceHost(typeof(LoggingController),new Uri("0.0.0.0"));

, и это дает мне недопустимый формат URI

Кто-нибудь знает, как мне написать это?

я попытался получить к нему доступ из-за пределов локальной сети, но это не сработало, я создал небольшое тестовое программное обеспечение с использованием tcpiplistener, начал слушать тот же порт и установил базовый адрес протокола tcpip наAnyip и небольшое тестовое программное обеспечение работали, поэтому я понял, что все, что мне нужно сделать, это установить то же самое для веб-службы -

TcpListener tcpListener = new TcpListener(IPAddress.Any,10021);

, это также означает, что мой системный администратор выполнил свою работу, чтобы убедиться, что порт /сервер доступен снаружи, теперь мой веб-сервис не должен работать!это работает, но я не могу получить к нему доступ извне, я могу получить к нему доступ с того же компьютера, если я запускаю клиент на том же компьютере

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Следующий код работает для меня в аналогичной ситуации:

Uri baseAddress = new Uri("net.tcp://0.0.0.0:8080/MyService");
host = new ServiceHost(typeof(MyServer), baseAddress);
1 голос
/ 08 августа 2010

Напоминает мне о проблеме, которая была у нас с нашим программным обеспечением. Конфигурация веб-службы по умолчанию использовала учетные данные сети Windows для применения защиты на основе сообщений, которая - из-за учетных данных домена / сети - не будет работать из другой сети. Нашим решением было отключить защиту привязки службы (что может быть немного сложнее в зависимости от используемой привязки). Для привязок по умолчанию, таких как WebHttpBinding, это просто передача параметра в конструкторе. Надеюсь, это поможет!

...