Http Listener не работает на порте 8080 или других портах (работает только на порте 80) - PullRequest
0 голосов
/ 01 августа 2010

Я написал простой WebServer с использованием класса HttpListener (.net 2.0)

Кажется, он не работает на порте, отличном от 80.

Когда я прослушиваю транспорт к моему серверу, я вижу, что пакеты Syn на порту 8080 прибывают на сервер, но нет ответа Syn / Ack, хотя, когда я запускаю команду netstat, -ai видит, что сервер прослушивает порт 8080 (я убедился, что мое приложение слушает)

HttpListener server = new HttpListener()
server.Prefixes.Add("http://192.168.4.133:8080/");
server.Start();
_log.Write("Waiting for a connection... ");
HttpListenerContext context = server.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
_log.Write("Got request for " + request.RawUrl);

приведенный выше код не получает никакого контекста (застрял на строке server.GetContext ()) если я изменю префикс на "http://192.168.4.133/" приведенный выше код работает отлично.

когда я тестирую его на порте 80, я убиваю службы IIS и проверяю, что именно мое приложение прослушивает соответствующий порт.

Я запускаю это на XP, так что я не думаю, что это проблемы с безопасностью .... но вы никогда не знаете ... Я читал об инструменте httpcfg, но на самом деле не понял его ...

Есть ли что-то врожденное различие между прослушиванием на порте 80 и прослушиванием на других портах? 8080 или еще лучше другой случайный пользовательский порт? Спасибо, Итай

Ответы [ 2 ]

2 голосов
/ 01 августа 2010

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

2 голосов
/ 01 августа 2010

Проверьте, включен ли ваш брандмауэр и, если включен, запрещает ли этот порт доступ.Вы можете временно отключить его для теста, просто чтобы убедиться.

Примечание: нет необходимости искать и убивать процессы IIS, просто остановите службу Windows IIS (запустите команду "services.msc", чтобысмотреть список)

...