2017-03-07 17 views
0

こんにちは私はあなたがそれを見てほしいシナリオがあります、あなたは私が今得ていないものを得る可能性がある、私は条件を満たさなければならない、基準、もう一つは、すべてのパラメータが満たされているにもかかわらず、作品(電子メールを送信しません)していません。http://example.com/SPD/FileUpload.aspx?APPid=APP-016784&DocumentId=DC080497-9AFA-E511-BD4F-00155D47EC98&Userid=Johnドウ&サブネーム=服従-1459797754588 &ドット= GCL36 &:Request.QueryStringパラメータに基づいて電子メールを送信

 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("[email protected]")); 
       mail.From = new MailAddress("[email protected]", "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("[email protected]")); 
       mail.From = new MailAddress("[email protected]", "DONOTREPLY"); 
       mail.Subject = "The Subject "; 
       mail.IsBodyHtml = true; 
       mail.Body = "testing testing testing"; 
       smtpClient.Send(mail); 

      } 
     } 
     catch (Exception ex) 
     { 
      return; 
     } 

は、URLは次のようになりますfdny =拒否& hro = na

このURLにあるように、 "dot"変数の値はGCL36で "fdny"は拒否されましたが、 "if"の2番目の条件は呼ばれません。

+0

ブレークポイントを設定してコードをステップ実行し、値を調べるとどうなりますか? – Seano666

+2

あなたの最初の 'if'文は' fdny = Rejected'でも一致します。 – adrianbanks

+0

おそらく、これは私が実際にコードをデバッグすることができず、これがCRM 2016のエンティティのiFrame内のaspネットWebアプリケーションではないことを望んでいなかったので、私は助けを求めた主な理由です。誰かがおそらく私がコード上に見ていない何かを見ることができるようにしたいと思っています... – John

答えて

0

いいえ..コードで問題が見つかりました。現在のコードとURLの例では、最初のifブロックも実行されません。

最初のifブロックでは、Request.QueryString["dep"].ToString()もチェックしています。投稿したURLの例には、パラメータdepがありません。だから、もし文がNullReferenceExceptionを投げれば、それは直接catchブロックに行き、何もしないでそこから戻るでしょう。

QueryStringパラメータを使用する前に、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("[email protected]")); 
     mail.From = new MailAddress("[email protected]", "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("[email protected]")); 
     mail.From = new MailAddress("[email protected]", "DONOTREPLY"); 
     mail.Subject = "The Subjectt"; 
     mail.IsBodyHtml = true; 
     mail.Body = "testing testing testing"; 
     smtpClient.Send(mail); 
    } 
} 
catch (Exception ex) 
{ 
    return; 
} 

これで問題が解決するはずです。

P.S. catchブロックで例外を適切に処理した場合は、この問題を特定できました。キャッチブロックから戻ってくるだけで、このような状況になることがあります。

+0

ありがとう、それはまさに何が起こっていたのか、私はあなたの例(最良の方法)で修正するか、その変数を&dep = naなどのJavaScriptを介して送ることができるURLに "dep"変数がないことになりました!ありがとうございました。 – John

関連する問題