使用VB.net和VS 2015创建一个asp.net站点。
我有一个每分钟自动刷新的网页,它会显示几个项目的状态。如果发现错误,我希望能够每60分钟从该页面发送一封电子邮件。我更喜欢只使用站点内的代码,但如果需要,我可以访问sql server 2012来创建数据库。
我认为最好的方法是在页面上调用子程序发送电子邮件时出错。就目前而言,每分钟都会发生这种情况会让人讨厌。我认为最好的方法是使用会话变量,但是我不知道如何每隔60分钟发送一次电子邮件,然后在错误不再存在时停止并将时间重置为0。
下面的代码显示了我到目前为止所拥有的内容。这由case语句包装,检查错误。
'checks to see if email needs to be sent
Select Case Session("sendEmail")
Case Nothing, 60, 120, 180
'send email
Case Else
'do nothing
End Select
Session("sendEmail") = Session("sendEmail") + 1
这应该工作,因为页面刷新60次后会话变量将与case语句匹配但我需要它发送电子邮件,直到有人解决了错误,我不想硬编码每次递增60的数字列表在案例陈述中。
答案 0 :(得分:0)
有关案件陈述的信息,请参阅https://msdn.microsoft.com/en-us/library/cy37t14y.aspx。
请参阅working with SELECT CASE and MOD,了解使用mod之前的案例陈述。
Dim number As Integer
number = 180
Dim remainder As Integer
remainder = number Mod 60
'checks to see if email needs to be sent
Select Case remainder
Case 0
Console.WriteLine("divisible by 60")
Case Else
Console.WriteLine("not divisible by 60")
End Select
答案 1 :(得分:0)
您可以使用Mod
运算符除以60分钟并获得余数,因此您无需检查60,120,180等。
Dim minutes as Integer
If Not Session("sendEmail") Is Nothing Then
minutes = TryCast(Session("sendEmail"), Integer)
Else
minutes = 0
End If
'checks to see if email needs to be sent
If (minutes Mod 60) > 1
'send email
minutes = 0 ' reset counter
Else
minutes = minutes + 1
End If
Session("sendEmail") = minutes