これは私のための困惑ものです。私はこれらのタイプのエラーのほとんどが配列の境界の外にあるものにアクセスしようとしていることを知っています(エラーもそう言いますが)。以下は、エラーです:ここコンソールアプリケーションでSystem.IndexOutOfRangeException - おそらくシステムベース
System.IndexOutOfRangeException: Index was outside the bounds of the array at MyProgram.Program.Main(String[] args) in Program.cs:line 47
唯一の問題は、私のプログラムの最初の行は(ちょうどMailAddress
変数を定義する)ライン47であるということで。その行をコメントアウトすると、2行目のエラーがSMTPクライアントを定義しています。昨日まで、この同じプログラムは過去2ヶ月ほど毎朝走った。私は、コードを変更したり、再コンパイルしたり、暫定的に何かをやったりしていません(しかし、それ以来、壊れた後にいくつかのデバッグを試みました)。
プログラム自体はかなりシンプルです。ちょうどSystem.Net.Mail
とSystem.IO
を使っていくつかのテキストファイルを見て、その内容の電子メールを送ります。
私の質問は、コードなしで投稿することはお勧めできませんが、一般的な質問です。私はそれが別のシステムで動作していることを知っているので(私はそこでそれを実行しました)、私の質問はこの動作/エラーを引き起こす可能性がありますか?私が試した
もの:
- 修理の.NET Framework 4.5.2(プログラム上のターゲットFrameworkが4.5です)。
- x64用の再コンパイルを試みました(以前はx86でした)。
- 再起動しました(明らかに、それを指摘したいだけです)。
- 無効Windowsファイアウォールをテストします(エラーの原因ではありません)。
私は行方不明ですか?
EDIT:
static void Main(string[] args)
{
MailAddress sendEmailFromNice = new MailAddress("[email protected]", "Nice Email Name");
SmtpClient client = new SmtpClient();
client.Port = smtpport;
client.Host = smtphost;
client.EnableSsl = true;
client.Timeout = 25000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(sendEmailFrom, sendEmailFromPass);
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
// gotten list
List<int> alreadyGottenList = new List<int>();
string line = null;
string[] lineSplit = null;
int currentInt = 0;
if (File.Exists(storedIntList))
{
using (var reader = new StreamReader(storedIntList))
{
line = null;
while ((line = reader.ReadLine()) != null)
{
currentInt = int.Parse(line.Trim());
alreadyGottenList.Add(currentInt);
currentInt = 0;
}
}
}
List<int> newIntsToGet = new List<int>();
if (File.Exists(LogFile))
{
using (var readerPrimaryToday = new StreamReader(LogFile))
{
while ((line = readerPrimaryToday.ReadLine()) != null)
{
lineSplit = line.Split(',');
if (lineSplit[0].ToString() != "header")
{
currentInt = int.Parse(lineSplit[8].ToString().Trim());
}
if (!alreadyGottenList.Contains(currentInt))
{
newIntsToGet.Add(currentInt);
alreadyGottenList.Add(currentInt);
File.AppendAllText(storedIntList, currentInt.ToString() + Environment.NewLine);
}
}
}
}
string emailBody = "BodyHere ";
string emailSubject = "Subject here";
foreach (var thisVar in newIntsToGet)
{
emailBody = emailBody + thisVar.ToString() + Environment.NewLine;
}
MailMessage messageToSend = new MailMessage();
messageToSend.Subject = emailSubject;
messageToSend.Body = emailBody;
messageToSend.IsBodyHtml = false;
messageToSend.To.Add(sendEmailTo);
client.Send(messageToSend);
}
それは数字だけで.csvファイルを持っているし、私はまだ見ていない任意の番号のテキストファイルをチェックします。見つかった場合は、電子メールと保存された.csvファイルに追加されます。
私たちにコードを教えてください – Baksteen
行き先コードを教えてください。 –
インデックスは何ですか、配列の長さは... –