大家好我有一个场景,我希望你能看到它,有可能你得到我现在没有得到的东西,我必须条件,第一个在参数符合标准时工作,第二个不起作用(即使已满足所有参数,也不会发送电子邮件:
try
{
SmtpClient smtpClient = new SmtpClient();
MailMessage mail = new MailMessage();
if (Request.QueryString["dot"].ToLower() == "rejected" || Request.QueryString["dep"].ToLower() == "rejected" || Request.QueryString["fdny"].ToLower() == "rejected")
{
mail.To.Add(new MailAddress("receiver@domain.org"));
mail.From = new MailAddress("sysadmin@domain.org", "DONOTREPLY");
mail.Subject = "The Subjectt";
mail.IsBodyHtml = true;
mail.Body = "testing testing testing";
smtpClient.Send(mail);
}
else if (Request.QueryString["dot"].ToLower() == "gcl36" && (Request.QueryString["fdny"].ToLower() == "rejected" || Request.QueryString["hro"].ToLower() == "rejected"))
{
mail.To.Add(new MailAddress("receiver@domain.org"));
mail.From = new MailAddress("sysadmin@domain.org", "DONOTREPLY");
mail.Subject = "The Subject ";
mail.IsBodyHtml = true;
mail.Body = "testing testing testing";
smtpClient.Send(mail);
}
}
catch (Exception ex)
{
return;
}
网址如下所示:http://example.com/SPD/FileUpload.aspx?APPid=APP-016784&DocumentId=DC080497-9AFA-E511-BD4F-00155D47EC98&Userid=John Doe& SubName = Submission-1459797754588& dot = GCL36& fdny = Rejected& hro = na
正如您在此URL中看到的那样,“dot”变量的值为GCL36,“fdny”已被拒绝,但“if”中的第二个条件永远不会被调用。
答案 0 :(得分:0)
好的..我发现了代码的问题。使用当前代码和示例URL,即使第一个if块也不会被执行。
在第一个if块中,您还要检查Request.QueryString["dep"].ToString()
。您发布的示例网址没有参数dep
。这就是为什么if语句将抛出NullReferenceException
并且它将直接转到catch
阻止并从那里返回而不执行任何操作。
您需要做的是确保在使用QueryString参数之前确保它们不为null。此外,您还需要确保在通用条件之前首先检查特定条件。
try
{
var dot = Request.QueryString["dot"]?.ToLower() ?? string.Empty;
var dep = Request.QueryString["dep"]?.ToLower() ?? string.Empty;
var fdny = Request.QueryString["fdny"]?.ToLower() ?? string.Empty;
var hro = Request.QueryString["hro"]?.ToLower() ?? string.Empty;
SmtpClient smtpClient = new SmtpClient();
MailMessage mail = new MailMessage();
//Putting if block of more specific condition check first.
if (dot == "gcl36" && (fdny == "rejected" || hro == "rejected"))
{
mail.To.Add(new MailAddress("receiver@domain.org"));
mail.From = new MailAddress("sysadmin@domain.org", "DONOTREPLY");
mail.Subject = "The Subject ";
mail.IsBodyHtml = true;
mail.Body = "testing testing testing";
smtpClient.Send(mail);
}
else if (dot == "rejected" || dep == "rejected" || fdny == "rejected")
{
mail.To.Add(new MailAddress("receiver@domain.org"));
mail.From = new MailAddress("sysadmin@domain.org", "DONOTREPLY");
mail.Subject = "The Subjectt";
mail.IsBodyHtml = true;
mail.Body = "testing testing testing";
smtpClient.Send(mail);
}
}
catch (Exception ex)
{
return;
}
这可以解决您的问题。
P.S。如果您在catch块中正确处理了异常,则可能已经确定了问题。只需从catch区块返回就会经常让你陷入这种情况。