Celui-ci est un énigmatique pour moi. Je sais que la plupart de ces types d'erreurs proviennent d'essayer d'accéder à quelque chose en dehors des limites d'un tableau (et l'erreur le dit aussi), mais cela ne s'additionne pas ici. Ce qui suit est l'erreur:System.IndexOutOfRangeException dans l'application console - Probablement basé sur le système
System.IndexOutOfRangeException: Index was outside the bounds of the array at MyProgram.Program.Main(String[] args) in Program.cs:line 47
Le seul problème ici étant que la première ligne de mon programme est à la ligne 47 (qui définit juste une variable MailAddress
). Si je commente cette ligne, les erreurs de deuxième ligne, qui définit un client SMTP. Jusqu'à hier, ce même programme a fonctionné tous les matins pendant les deux derniers mois. Je n'ai pas changé le code, recompilé, ou fait quelque chose dans l'intervalle (mais depuis, j'ai essayé de déboguer pour le comprendre après qu'il s'est cassé).
Le programme lui-même est assez simple, il utilise simplement System.Net.Mail
et System.IO
pour parcourir certains fichiers texte et envoyer un e-mail du contenu.
Ma question, même si je sais qu'il n'est pas conseillé de poster sans code, est générale. Puisque je sais que cela fonctionne sur un autre système (je l'ai juste couru là-bas), ma question est ce qui pourrait causer ce comportement/erreur?
choses que j'ai essayé:
- .NET Framework Repair 4.5.2 (le Cadre cible du programme est de 4,5).
- J'ai essayé de recompiler x64 (précédemment x86).
- Redémarré (évidemment, je voulais juste le signaler).
- Pare-feu Windows désactivé à tester (peu probable à cause de l'erreur).
Y a-t-il quelque chose d'évident ici qui me manque?
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);
}
Il a juste un fichier .csv avec des chiffres, puis vérifie un fichier texte pour tous les chiffres que je ne l'ai pas déjà vu. S'il en trouve un, il l'ajoute à un e-mail et au fichier .csv stocké.
Montrez-nous le code – Baksteen
Veuillez partager du code pour passer. –
Quel était l'indice, et combien de temps était le tableau ... –