Открытие брандмауэра для службы Windows - PullRequest
4 голосов
/ 10 февраля 2011

У меня есть сервисное приложение C #, к которому клиенты xml-rpc должны обращаться извне.Самостоятельно размещается через HttpListenerRequest;не IIS размещен.(Не требуется, чтобы на серверах был включен IIS)

Он отлично работает с клиента, когда брандмауэр сервера выключен ИЛИ порты, используемые приложением, открыты.Однако, если я создаю исключение брандмауэра, чтобы включить приложение через его имя;это не доступно с клиентского компьютера.(Я пробовал как вручную включить службу, так и добавить код для включения приложения из моего установщика.)

Причина, по которой я хочу, чтобы приложение было включено;а не порты в том, что порты могут меняться.(Мое приложение будет проверять диапазон доступных портов при отключении, если используются порты по умолчанию).Если посмотреть по сторонам, то выясняется, что ни одна служба, которая не является полностью «самостоятельной», не может иметь брандмауэр.

Кто-нибудь знает способ для этого?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Попробуйте установить тип SID для unrestricted для вашей службы.

Создание входящей программы или правила обслуживания

Хотя команда также допускает значениеНЕТ, этот параметр означает, что служба не может использоваться в правиле брандмауэра, как описано здесь.По умолчанию большинство служб в Windows настроены как НЕОГРАНИЧЕННЫЕ.Если вы измените тип SID на RESTRICTED, служба может не запуститься.Мы рекомендуем изменить тип SID только для служб, которые вы хотите использовать в правилах брандмауэра, и изменить тип SID на НЕОГРАНИЧЕННЫЙ.

На странице сказано использовать команду

sc sidtype <Type> <ServiceName>

однако для меня сам инструмент sc говорит использовать это:

sc sidtype <ServiceName> <Type>

Возможно, служба также должна работать под учетной записью «Сетевая служба».Я не совсем запустил свой сервис.РЕДАКТИРОВАТЬ: Моя проблема была из-за WCF , а не это.

0 голосов
/ 11 февраля 2011

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

netsh http add urlacl url=http://www.contoso.com:80/MyUri user=DOMAINE\utilisateur listen=yes
...