Отладка службы Topshelf, которая не будет работать под учетной записью с ограничениями - PullRequest
2 голосов
/ 01 октября 2009

У меня есть служба Windows, написанная с использованием Topshelf . Я пытаюсь настроить его для работы с использованием учетной записи Windows с ограниченными правами, а не с помощью LocalSystem. Это также необходимо, поскольку я хотел бы подключиться к базе данных с помощью встроенной аутентификации.

Служба работает при запуске в качестве LocalSystem (хотя и со строкой подключения к базе данных, содержащей учетные данные) и при запуске консольного приложения в качестве моей ограниченной учетной записи (с использованием runas).

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

Служба не ответила на запрос запуска или управления своевременно.

В журнале событий всплывающих окон приложения я также получаю следующее:

Ошибка приложения. Исключительная ситуация неизвестного программного исключения (0xc06d007e) возникла в приложении в расположении 0x77e4bef7.

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

Любые предложения, что я мог бы упустить или что я мог бы попробовать дальше?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2010

Эта проблема, по-видимому, связана с сервером (контроллером домена), а не с TopShelf. Служба, созданная с помощью компонента службы .NET, также демонстрирует такое же поведение.

Служба успешно работает на другом компьютере (в том же домене).

К сожалению, это не помогает диагностировать проблему, но дает мне приемлемый обходной путь.

0 голосов
/ 09 октября 2009

Я только начал видеть это на некоторых из моих сервисов, написанных на .net 2.0. Они начнут нормально, когда сервер загрузится, но если я перезапущу их в течение дня, они не запустятся и выдадут это сообщение об ошибке.

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

Не знаю, считается ли это «исправлением», но это то, что сработало для меня.

0 голосов
/ 01 октября 2009

Ознакомьтесь со статьей MSDN Отладка служб Windows , в которой описано, как отлаживать службы Windows.

...