3
我有一個Windows控制檯應用程序。在這個Windows控制檯項目中,我將發送一封電子郵件。Foreach datatable沒有得到最後一行
它讓我非常困惑,因爲當我從.exe文件執行它時,我無法獲得發送電子郵件的最後一行 - 但是如果我正在從Visual Studio進行調試,它就會起作用。
我已經確保我創建的所有.dll都是Copy Local = True
。但仍然無效。
這是我的代碼:
靜態無效的主要(字串[] args){
DataSet dtPending = db.GetDataSet("GET_REMINDER_BACKDATE", CommandType.StoredProcedure);
DataTable ds = dtPending.Tables[0];
System.Console.WriteLine("Start looking pending approval ....");
System.Console.WriteLine();
foreach (DataRow row in ds.Rows)
{
try
{
System.Console.WriteLine(" Process {0} ..", row["DestinationName"].ToString());
db.AddParameter("RequestID", row["RequestID"].ToString());
db.AddParameter("ServerUri", ConfigurationManager.AppSettings["MIS_url"]);
DataSet result = db.GetDataSet("GET_EMAIL_DATA_REMINDER", CommandType.StoredProcedure);
DataTable datas = result.Tables[0];
foreach (DataRow data in datas.Rows)
{ Mail.Send(ConfigurationManager.AppSettings["mailSender"], row["DestinationEmail"].ToString(), "", data["EmailSubject"].ToString(), data["EmailContent"].ToString());
}
System.Console.WriteLine(" Insert to pending approval log");
InserReminderBackdateLog(Guid.Parse(row["RequestID"].ToString()), row["RefferenceNo"].ToString(), row["EmployeeID"].ToString(), row["SBU"].ToString(), "1");
System.Console.WriteLine();
}
catch (Exception ex)
{
//do nothing
System.Console.WriteLine(" Error : {0}", ex.Message);
}
}
System.Console.WriteLine("Finish ....");
//System.Console.ReadKey();
}
這是因爲foreach
或應用程序本身的?我在代碼中找不到我的錯誤。
你使用的調試,並通過你的循環加強? – Dave
你可以拿出'try' /'catch(Exception ex)'看看它是如何運行的嗎? – Enigmativity
猜測要麼ds.Rows比你期望的要小一些,在這種情況下你不應該看到Console.WriteLine的*或*,如果他們在那裏但是電子郵件沒有被髮送然後datas.Rows是空的爲最後(其中一個?)數據集。添加一個「System.Console.WriteLine(」datas.Rows Count = {0}「,datas.Rows.Count);」 after = result.Tables [0];並看看它是什麼 - 它是否比你期望的要少? –