У меня есть Windows служба (с использованием SqlDependency
), которая отправляет мне электронное письмо при каждом запуске и каждый раз, когда в мою таблицу продаж вставляется новая строка (в базе данных включена Service Broker
). Я также пишу файл журнала для регистрации, когда служба запускается, данные вставляются в таблицу, если электронное письмо было успешно отправлено, и когда служба остановлена.
- Когда я запустил вручную, все работало нормально.
- Затем я выключил и снова включил свой P C и вставил данные в свою таблицу в базу данных, но ничего не произошло (электронная почта не отправлена и нет регистрации в моем файл журнала).
- Я перезапустил службу вручную, и она снова заработала.
- Выключил и снова включил P C, и снова ничего не произошло.
- Я сделал некоторые исследования и изменили тип инициализации на автоматический и попробовал еще раз. И больше ничего не произошло.
- Я изменил тип инициализации на Automati c Задержка и попытался снова. Но это тоже не сработало, даже через 1 час после включения P C.
- Теперь я вручную перезапустил службу, и файл журнала зарегистрировал, что служба остановилась и запустилась, я получил электронное письмо, которое служба запустилась, и после того, как я вставил данные в свою таблицу базы данных, и журнал регистрации, и сообщение электронной почты работали очень хорошо.
Каждый раз, когда это не работало, я проверял диспетчер служб в Windows и оно было помечено как «Выполняется».
Я не знаю, нужно ли мне настраивать что-то другое в моем коде или в свойствах моего сервиса. У кого-нибудь когда-нибудь возникала эта проблема?
РЕДАКТИРОВАТЬ
Я изменил свой сервис и включил таймер, поэтому каждую минуту он записывает время в мой текстовый файл журнала. После перезапуска моего P C файл журнала продолжал регистрировать время каждую минуту, но не регистрировал вставку, которую я сделал в своей таблице базы данных.
Я предполагаю, что служба может потерять базу данных соединение при перезапуске P C, поэтому SqlDependency
не может обнаружить изменения. Имеет ли это какой-то смысл?