На этой странице есть комментарий, который звучит так, как будто он относится к тому, что вы видите.
Пользователь (TWheelhouse) сказал:
На поверхности кажется, что как-то
некоторые функции .NET Framework пытаются
повторно использовать экземпляры исключения,
вызывая флаги, добавленные в «Данные»
коллекция должна быть установлена
когда они действительно просто висят
вокруг с предыдущего раза, когда
Исключение было брошено и флаг
добавлено ...
public static void foo(string connectionString) {
try {
SqlConnection cn = new SqlConnection (connectionString);
cn.Open();
}
catch (SqlException ex) {
if (ex.Data.Contains("MY_TEST_FLAG"))
Debug.WriteLine("BAD! It Shouldn't be there yet!");
else
Debug.WriteLine("Fine.");
ex.Data.Add("MY_TEST_FLAG", true);
}
}
Вызовите foo () несколько раз с
Строка подключения, которая vaild в
формат, но, возможно, с плохим UID
значение. Первый раз, когда вы звоните FOO, я
получить «отлично». сообщение, когда плохо
Строка подключения вызывает
Объект подключения, чтобы бросить
SqlException, но каждый раз после
что я получаю "ПЛОХО!" сообщение (для
в то время как в итоге я получу "отлично"
сообщение снова, один раз, потом еще "ПЛОХО!"
сообщения).
Если каждый раз я пытаюсь создать
SqlConnection с плохим соединением
строка действительно приводит к
совершенно уникальные случаи
SqlException, чтобы быть брошенным, я бы получил
«Прекрасное» сообщение каждый раз!
Я не тиражировал эту проблему сам и не пытался запустить приведенный выше код, но казалось, что это может быть связано с вашей проблемой.