Если вы используете HTTPListener, вы должны использовать httpconfig.exe или netsh для настройки вашего HTTPListener, потому что:
A. Насколько я знаю, для этого нет API для C#, только инструменты командной строки.
Б. По умолчанию только СИСТЕМА или локальная группа администраторов могут прослушивать префиксы http.
Итак... если ваше приложение работает под учетной записью пользователя, вам необходимо явно предоставить доступ (используя httpcfg.exe или netsh), потому что ваш HTTPHandler использует HTTP.sys для совместного использования портов с работающим веб-сервером (так что вы можете разместить свой собственный веб-приложение на порту 80, в то время как IIS также работает на порту 80).
Лучшим решением может быть использование реального встроенного веб-сервера для прослушивания нужного вам порта. Это не сработает, если другое приложение (например, IIS) уже использует порт, но, поскольку оно НЕ использует HTTP.sys для совместного использования портов, нет никаких ограничений безопасности в отношении того, какая учетная запись пользователя открывает/прослушивает порт. . Поскольку вы хотите, чтобы пользователь указал свой собственный порт, кажется приемлемым запустить его на другом порту, кроме порта 80.
Моя компания производит коммерческий продукт под названием веб-сервер Neokernel (http://www.neokernel.com), который работает ASP.NET и позволяет программно запускать/останавливать сервер и устанавливать конфигурации; вы можете встраивать и распространять эту сборку вместе с приложением.
Существует также исходный код Cassini, который вы можете изменить и внедрить, он бесплатный, но имеет пару недостатков, таких как отсутствие ведения журнала или поддержка SSL.
person
Damien
schedule
06.05.2010