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];并看看它是什么 - 它是否比你期望的要少? –