2017-02-13 2 views
0

я создаю веб-приложение, в котором мне нужно уволить веб-службу каждые 12/24 часовогонь веб-сервис, через каждые 12 часов C#

здесь моя хранимая процедура

alter proc TMSautomail 
@datefrm datetime, 
@dateto datetime 
as 
begin 
select email,UserName from tblUser where 
UserName not in(select UserName from userlogin 
    where date between @datefrm and @dateto) 
end 

я получать электронный идентификатор здесь

[WebMethod] 
     public void fireautomail() 
     { 
      string email = ""; 
      string empname = ""; 

      DateTime datefrm = DateTime.Today; 
      DateTime dateto = DateTime.Today.AddDays(1); 

      MailMessage msg = new MailMessage(); 

      string mailfrom = "testemail"; 

      cmd = new SqlCommand("TMSautomail"); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Connection = con; 
      con.Open(); 
      cmd.Parameters.AddWithValue("@datefrm",datefrm); 
      cmd.Parameters.AddWithValue("@dateto", dateto); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds); 
      for(int i=0; i<ds.Tables[0].Rows.Count;i++) 
      { 
       empname = ds.Tables[0].Rows[i][1].ToString(); 
       email = ds.Tables[0].Rows[i][1].ToString(); 
      } 
      if (email != "" && email.Length != 0 && email != "NULL") 
      { 
       msg.From = new MailAddress(mailfrom); 
       string subject = "Login Details"; 
       msg.Subject = subject.ToString(); 
       msg.IsBodyHtml = true; 
       var password = "testpassword"; 
       msg.Body = "<b style='color:red'>Dear " + empname + "</b><br /><br />" 
        + "You Forget To Logged In Today<br/>" 
        + " You May Miss Important Task's <br/>" 
       + " Login To Be Updated <br/>" 
       + "Regards<br/>" 
       + "Team DES."; 
       SmtpClient sc = new SmtpClient("smtp.gmail.com"); 
       sc.Port = 587; 
       sc.Credentials = new NetworkCredential(mailfrom, password.ToString()); 
       sc.EnableSsl = true; 
       sc.Send(msg); 
       string edetails = ""; 
       edetails = edetails + " " + "success"; 
      } 
     } 

и это мой метод веб-сервис,

здесь у меня есть дата TOD ау и завтра, который будет проверять и извлекать данные из StoredProcedure, но проблема в том,

я хочу стрелять этот веб-сервис периодически как ежедневно в 6 часов вечера и 10 утра

то, что мне нужно делать в этой сети оказание услуг?

+1

Вы можете сделать сервис Windows, а затем использовать планировщик задач Windows, чтобы называть его соответствующим образом. – Izzy

+0

Можете ли вы показать мне код? –

+0

В качестве альтернативы SQL Server имеет планировщик задач (Агент) и может отправлять электронную почту (sp_send_dbmail). Если вы не хотите этого делать, самый простой способ вызвать fireautomail() - использовать планировщик задач Windows для запуска .bat-файла, который вызывает URL-адрес с curl. –

ответ

2

Периодически вы можете запускать определенную задачу с помощью планировщика задач Windows. Перейдите к окну «start» type -> «scheduler task», затем создайте новую задачу и настройте ее с тем, что вы хотите, чтобы это задание выполнялось, например, так вы запускаете JAVA-код: Создайте файл .cmd в некоторых местоположение с контентом «C: \ Program Files \ Java \ jdk1.8.0_25 \ bin \ java.exe" -jar "E: \ YourProgram.jar"

Теперь скажите планировщику задач, чтобы запустить этот .cmd-файл и дать период времени, когда вызывать этот .cmd, который inturn вызывает вашу java-программу, которая имеет бизнес-логику вашего запуска почты или что-то еще. (ваша java-программа может просто иметь только функцию main()), аналогичную основной в C#