ich eine Windows-Konsolenanwendung haben. In diesem Windows-Konsolenprojekt werde ich eine E-Mail senden.Foreach Datentabelle wird nicht die letzte Zeile
Es verwirrt mich so sehr, weil ich nicht die letzte Zeile eine E-Mail senden kann, wenn ich es aus einer Exe-Datei ausführen - aber wenn ich Debugging von Visual Studio es funktioniert.
habe ich schon dafür gesorgt, dass alle .dlls, die ich sind Copy Local = True
erstellt. Aber es funktioniert immer noch nicht.
Dies ist mein Code:
static void Main (string [] 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();
}
Ist dies wegen der foreach
oder der Anwendung selbst? Ich kann meinen Fehler im Code nicht finden.
Haben Sie den Debugger verwendet und trat durch Ihre Schleife? – Dave
Könnten Sie den 'try' /' catch (Exception ex) 'nehmen und sehen, wie es läuft? – Enigmativity
bei einer Vermutung entweder ds.Rows ist ein kleiner, als man in diesem Fall erwarten Sie sollten nicht die Console.WriteLine der * oder * sehen, ob sie da sind, aber die E-Mail gesendet wird, dann nicht datas.Rows für die letzte leer ist (einer von?) die Datensätze. Hinzufügen eines "System.Console.WriteLine (" datas.Rows Count = {0} "datas.Rows.Count);" nach = Ergebnis.Tabellen [0]; und sehen, was es ist - ist es immer weniger als Sie erwarten? –