Итак, я создал сервис в моей программе. Мне нужен этот сервис для обновления моей таблицы. Это должно работать как проверка отчетов о доставке смс сообщений.
Так что в этом сервисе я хотел бы выполнить API из шлюза SMS для получения данных, а затем вставить их в таблицу журнала в SQL.
Мне удалось создать таймер в сервисе с некоторыми обновлениями EventLog. Так что мой сервис жив, но проблема в том, что когда я пытаюсь что-то сделать с моим сервером sql, он, вероятно, ничего не выполняет, и я действительно не знаю почему.
услуга:
public partial class Service1 : ServiceBase
{
private int eventId = 1;
DataSet ds = new DataSet();
SqlConnection cs = new SqlConnection("Data Source=lvrabel; Initial Catalog=EagleTest; Integrated Security=TRUE;");
SqlDataAdapter da = new SqlDataAdapter();
public Service1()
{
InitializeComponent();
eventLog1 = new EventLog();
if (!EventLog.SourceExists("MySource"))
{
EventLog.CreateEventSource("MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart");
Timer timer = new Timer();
timer.Interval = 60000; // 60 seconds
timer.Elapsed += new ElapsedEventHandler(this.GetReports);
timer.Start();
}
protected override void OnStop()
{
eventLog1.WriteEntry("In OnStop.");
}
public void OnTimer(object sender, ElapsedEventArgs args)
{
// TODO: Insert monitoring activities here.
// eventLog1.WriteEntry("Monitoring the System", EventLogEntryType.Information, eventId++);
}
public void GetReports(object sender, ElapsedEventArgs args)
{
//SqlCommand selectTelephone = new SqlCommand("select telephone from Contacts where LASTNAME = 'test'", cs);
//cs.Open();
//SqlDataAdapter da = new SqlDataAdapter(selectTelephone);
//DataTable dt = new DataTable();
//da.Fill(dt);
//foreach (DataRow dr in dt.Rows)
//{
// eventLog1.WriteEntry(dr["telephone"].ToString(), EventLogEntryType.Information, eventId++);
//}
//cs.Close();
cs.Open();
da.InsertCommand = new SqlCommand("insert into Log(IDContacts, IDEvent, Description, smsID) VALUES('5', '3', 'SMS OUT', '123')", cs); // dodelat id contacts
da.InsertCommand.ExecuteNonQuery();
cs.Close();
}
}
Есть ли возможность, как я могу устранить неполадки в обслуживании или вы видите какие-либо ошибки в моем коде? (атм у меня там только insertCommand. Я добавлю http api к коду позже)
https://imgur.com/a/O5T78E2 - imgur образ моих инсталляторов в сервисе
ДОБАВЛЕННОЕ РЕШЕНИЕ:
Так что вся проблема была в привилегиях пользователя. Я использовал локальный системный сервис вместо сетевого сервиса. Теперь все работает.