Мой компьютер находится за маршрутизатором, который перенаправляет на него порт 80 (как порт 80). Моя проблема в том, что HttpListener игнорирует запросы, адресованные внешнему IP-адресу.
Проблема не в роутере; если я создам пустой консольный проект С# и добавлю только следующие строки кода:
System.Net.Sockets.TcpListener s = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Any, 80);
s.Start();
System.Net.Sockets.TcpClient c = s.AcceptTcpClient();
... и запустите программу [примечание: при первом запуске этой программы пользователю может потребоваться разрешить исключение брандмауэра], она завершится, если я перейду к
http://localhost/testpath/
в моем браузере ИЛИ если я перейду к
http://externalipaddress/testpath/
в моем браузере - любой адрес успешно пытается подключиться к порту 80. Итак, все настроено правильно — этот компьютер может принимать внутренние и внешние соединения через порт 80.
Теперь, если я создам еще один пустой консольный проект C# и добавлю только следующие строки кода:
System.Net.HttpListener s = new System.Net.HttpListener();
s.Prefixes.Add("http://+:80/testpath/");
s.Start();
System.Net.HttpListenerContext c = s.GetContext();
... во-первых, я получу исключение HttpListenerException, в котором говорится, что доступ запрещен из-за проблем, упомянутых в этот вопрос. Затем он будет работать правильно, когда я закрою Visual Studio и снова открою его как администратор. Программа завершится (правильно), когда я перейду к
http://localhost/testpath/
Однако мой запрос просто истекает, если я перехожу к
http://externalipaddress/testpath/
Почему истекает время ожидания внешнего запроса к HttpListener? Результат воспроизводим с числовым IP-адресом или доменным именем для «внешнего IP-адреса», а также со многими перестановками вложенных папок, косых черт и т. д., а также для префиксы "http://*:80/testpath/", "http://externaldomain:80/testpath/" и "http: //externalipaddress:80/testpath/" (без пробелов; добавлено для форматирования stackoverflow).
homeusr51363_516.your_isp.com
или аналогичный - person rath   schedule 23.07.2013