Ich habe ein sehr seltsames Problem, ich verwende System.Data.SqlClient
. , um Daten von einem SQL Server über eine gespeicherte Prozedur zu erhalten. Wenn ich die Anwendung bei der Entwicklung und Stagging Maschinen testen es funktioniert gut, aber wenn ich implementieren die Anwendung auf dem Production Server I zufällig ein SqlDataReader
IndexOutOfRangeException
mit unterschiedlichen Spaltennamen bekommen !.SqlDataReader ist Tropfen Spalten nach dem Zufallsprinzip!
Der Fehler erscheint in 2 Anfragen pro 1000 Anfrage (approximativ).
Das SQL Server Clustered
Source Code:
public static List<CountryInfo> GetAllCountries(){
List<CountryInfo> Items = new List<CountryInfo>();
try{
using (rdr = SqlHelper.ExecuteReader(Globals.ConnectionString, "unv_spGetAllCountries"))
{
while (rdr.Read())
{
CountryInfo item = new CountryInfo();
item.CountryId = Convert.ToInt32(rdr["CountryId"]);
item.CountryName = rdr["CountryName"].ToString();
item.FirstLevel = rdr["FirstLevel"].ToString();
item.SecondLevel = rdr["SecondLevel"].ToString();
Items.Add(item);
}
}
}
catch (Exception ex)
{
throw ex;
}
Items.TrimExcess();
return Items;
}
Stored Procedure:
select * from unv_tblCountries order by CountryName;
Bereits Getestet
- Überprüfen Sie die Spaltennamen der Stored Procedure.
- Prüfen Sie die Spaltennamen der Reader.
- Überprüfen Sie die Verbindung String.
Wer konfrontiert dieses Problem und löst es?
Sie müssen mehr Details und vorzugsweise die relevante Quelle angeben. Ohne es gibt wenig darüber zu sagen. –
Ich empfehle einen catch-Block, der diese Ausnahme und alle übergebenen Parameter protokolliert. – Oded
Ich habe weitere Informationen hinzugefügt. –