Member 8631633 Ответов: 1

Tcplistener in VB.NET сервис не работает


Привет,
Должно быть, я что-то упустил, но искал уже несколько часов и не могу найти что!
У меня есть рабочий VB.net приложение forms, которое я пытаюсь преобразовать в сервис. Ниже я использовал один и тот же код в обоих случаях. Он работает в приложении forms, но не в сервисе.
.....
            listener = New TcpListener(Net.IPAddress.Any, Port)
            listener.Start()
            listenThread = New Threading.Thread(AddressOf WaitForRequest)
            listenThread.IsBackground = True
            listenThread.Start()
.......

 Private Sub WaitForRequest()
        Try
            Dim recclient As New TcpClient
            While True
                Log("wait")
                recclient = listener.AcceptTcpClient
                Log("receiving")
......

(log записывает строку в файл, это работает в обоих случаях)
Служба настроена на использование учетной записи администратора, имеющей доступ к сети.
Приложение работает, и когда что-то получено, журнал "получение" затем продолжается; служба никогда не проходит мимо "wait"/ recclient =.
Слушатель слушает - Если я попытаюсь запустить приложение, когда служба работает, я получу ошибку " только одно использование каждого сокета...". И когда я останавливаю службу, я регистрирую ошибку " операция блокировки была прервана вызовом WSACancelBlockingCall...".
Я думаю, что это что-то очевидное, но я просто не могу этого видеть!
Кто-нибудь может помочь? Спасибо.

Что я уже пробовал:

Я пробовал "локальная служба", "локальный компьютер" и "сетевая служба". NetworkService звучал многообещающе,но не работал.
Различные перестановки кода, но то, что дано, кажется самым близким к запуску - хотя это просто не работает!!
В журнале событий ничего нет.

1 Ответов

Рейтинг:
5

Member 8631633

Проблема с брандмауэром! Я не думал, что он заблокирует локальный доступ! Windows 10.