HTTP SERVER внешний префикс ip - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть HTTP-сервер в консольном приложении Win
Я могу получить к нему доступ в локальной сети (и это нормально)
Но добавление префикса externalIP дает мне исключение при запуске (не в ide)
Я установил перенаправление портов в моем маршрутизаторе для порта 4100
Я отключил брандмауэр моего ПК
Исключение:

System.Net.HttpListenerException (0x80004005):Параметр non corretto
в System.Net.HttpListener.AddAllPrefixes ()
в System.Net.HttpListener.Start ()
в HTTP_SERVER.Program.Main (String [] args) в C: \ Users \ricca \ Desktop \ HTTP SERVER \ HTTP SERVER \ Program.cs: riga 34

На всякий случай:
Parametro non corretto -> неверный параметр
riga 34 -> строка 34(где я звоню listener.Start();)

Код:

try
    {
        listener = new HttpListener();
        listener.Prefixes.Add("http://localhost:4100/main/");

        string externalip = new WebClient().DownloadString("http://icanhazip.com");
        Console.WriteLine(externalip);
     -->listener.Prefixes.Add("https://"+externalip+":4100/main/");

        listener.Prefixes.Add("http://"+ip+":4100/main/");
        Console.WriteLine("http://" + ip + ":4100/main/");
        listener.Start();

            //....
 }
catch(WebException eccezione_web)
 {
     Console.WriteLine(eccezione_web.Status);
 }
catch(Exception eccezione)
 {
     Console.WriteLine(eccezione.ToString());
 }

externalip правильный

Каждый ответ приветствуется

1 Ответ

0 голосов
/ 24 ноября 2018

Это не проблема программирования.

Классы, связанные с сетью, не заботятся о том, находится ли другой конец на том же компьютере (петлевой IP), на том же коммутаторе или на Voyager 2 Probe *.Если он работает против петлевого IP, только сетевые причины могут помешать ему работать в сети или через маршрутизатор **.

Убедиться в том, что путь существует, является проблемой сети, а не проблемой программирования.Вы пытаетесь получить к нему доступ через Интернет на вашем маршрутизаторе.Это совсем не тривиальная вещь.На самом деле речь идет о том, «как мне разместить сервер в Интернете».Обычные обходные пути включают «просто использовать VPN и учиться жить без этой функции».

* Не 100%, конечно.Вам нужны довольно длительные тайм-ауты на несколько световых минут.Для чего может потребоваться некоторая настройка программы.

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

...