我正在创建一个webapp,我需要每12/24小时启动一次Web服务
这是我的存储过程
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
我从这里获取电子邮件ID
[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";
}
}
这是我的网络服务网络方法,
这里我有今天和明天的日期,它将验证并从storedprocedure获取数据, 但问题是,
我想定期解雇此网络服务, 比如每天下午6点和上午10点
我需要在此网络服务中做些什么?
答案 0 :(得分:1)
您可以使用Windows任务计划程序定期触发特定任务。转到Windows“开始”类型 - &gt; “任务调度程序”,然后创建一个新任务并使用您希望此作业执行的操作对其进行配置,例如,这是触发JAVA代码的方式: 在某个位置创建一个.cmd文件,内容为“C:\ Program Files \ Java \ jdk1.8.0_25 \ bin \ java.exe”-jar“E:\ YourProgram.jar”
现在告诉任务调度程序运行这个.cmd文件并给出调用此.cmd的时间段,其中inturn调用你的java程序,它具有触发邮件或其他任何东西的业务逻辑。 (你的java程序只能有一个main()函数)类似于c#
中的main