2016-07-13 2 views
0

Я пытаюсь сделать службу Windows на C#, чтобы ежедневно отправлять автоматически электронные письма на основе данных, считываемых из указанной базы данных SQL-сервера.Проблемы с подключением к сети Windows C#

Я настроился на запуск службы, чтобы автоматически отправлять электронную почту, но когда я пытаюсь вставить услугу sqlconnection, просто не работает. Любые идеи?

Он работает, если я удаляю SqlConnection и устройство для чтения данных.

Вот мой код:

System.Timers.Timer createOrderTimer; 
    public Service1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     createOrderTimer = new System.Timers.Timer(); 
     createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail); 
     createOrderTimer.Interval = 2500; 
     createOrderTimer.Enabled = true; 
     createOrderTimer.AutoReset = true; 
     createOrderTimer.Start(); 
    } 
    protected override void OnStop() 
    { 
    } 
    public void GetMail(object sender, System.Timers.ElapsedEventArgs args) 
    { 
     SqlConnection connect = new SqlConnection("Server=10.222.160.17,5356;" 
      + "Database=tracking_tool;" 
      + "Trusted_Connection=True;" 
      + "user=admin;" 
      + "password=root"); 

     string line = ""; 
     connect.Open(); 
     SqlCommand GetData = new SqlCommand("select * from validation", connect); 
     SqlDataReader ReadData = null; 
     ReadData = GetData.ExecuteReader(); 

     while (ReadData.Read()) 
     { 

      line = ReadData["Line"].ToString(); 

     } 
     connect.Close(); 

     MailMessage mailMessage = new MailMessage(); 
     mailMessage.To.Add("[email protected]"); 
     mailMessage.From = new MailAddress("[email protected]"); 
     mailMessage.Subject = "example"; 
     mailMessage.Body = "example"; 
     SmtpClient smtpClient = new SmtpClient("10.214.81.97"); 
     smtpClient.Send(mailMessage); 
    } 
+1

Вы получаете какие-либо ошибки? – Ted

+0

Итак, вы получаете какие-то исключения, это может помочь в расследовании проблемы. Также вы уверены, что строка подключения правильная? В ip есть запятая. Я не эксперт, но я никогда не сталкивался с этим раньше. –

+1

Trusted_Connection = True скрывает имя пользователя и пароль и входит в вашу службу, пользователь, выполняющий службу, является тем, который был представлен для аутентификации сервера sql. Я бы попытался удалить Trusted_Connection и использовать имя пользователя и пароль – Steve

ответ

1

Вы читаете данные из SQL в переменную строку, но потом вы ничего не делать с ним. Я предполагаю, что на самом деле ничего плохого. Как вы определяете, что что-то не работает?

+0

Потому что никакая электронная почта не посылает автоматически. Если я комментирую строки, где я читаю данные, служба Windows отправляет электронные письма. (что читатель только для тестирования и показывает вам, что он не работает) –

+0

Ну, если он не отправляет электронное письмо, произошло исключение. Поскольку я не вижу кода обработки исключений, служба должна быть остановлена, и вы должны увидеть сообщение об ошибке в журнале событий Windows. –

+0

Не обязательно. Почта отправляется независимо от данных SQL, вот что я имел в виду с моим ответом. Я думаю, что вы возвращаете данные, они хранятся в вашей строке, а затем продолжают отправлять почту. Теперь я понимаю, что вы не получаете почту, но проблема в этом случае будет заключаться в отправке почты, а не в вашем db-коде. Вы можете вставить точку останова в строке = Readdata, чтобы увидеть, заполняется ли она. Но, как сказал Тед, вы переписываете его. Хотя у вас есть только одна строка в таблице. –

0

Ваш ConnectionString неправ. Попробуйте это: (просто замените свои конфиги)

server={YourSqlInstanceFullName};database={YourDatabaseName};Integrated Security=false;User ID={Database Username};Password={Password}