У меня очень странная проблема, я использую System.Data.SqlClient
. для получения данных с SQL Server, за исключением хранимой процедуры. Когда я протестировать приложение на машинах развития и спекуляции он работает нормально, но когда я развернуть приложение на Production Server, я случайно получаю сообщение об SqlDataReader
IndexOutOfRangeException
с разными названиями столбцов !.SqlDataReader - случайные капли столбцов!
Ошибка появляется в двух запросах в каждом запросе 1000 (приблизительно).
SQL-сервер Кластерный
Исходный код:
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;
}
хранимой процедуры:
select * from unv_tblCountries order by CountryName;
Уже испытано
- Проверьте имена столбцов хранимой процедуры.
- Проверьте имена столбцов считывателя.
- Проверить строку подключения.
Кто-нибудь сталкивался с этой проблемой и решает ее?
Вам нужно будет предоставить более подробную информацию и желательно соответствующий источник. Без этого мало что можно сказать об этом. –
Я предлагаю блок catch, который регистрирует это исключение и все передаются в параметрах. – Oded
Я добавил дополнительную информацию. –