Пожалуйста, прочитайте полностью, прежде чем отмечать это как дубликат.
В проекте, который я отлаживаю, я получаю SqlException, говоря следующее:
Дополнительная информация: соединение было успешно установлено с сервером, но затем произошла ошибка во время установления связи перед входом в систему. (поставщик: поставщик SSL, ошибка: 0 - время ожидания ожидания).
Это произошло во время сеанса отладки, когда предыдущий сеанс выполнялся только секунды до этого без проблем. Начиная с первоначального исключения, я не могу подключиться к серверу базы данных в этом проекте. Исключение генерируется при вызове метода SqlConnection.Open().
Фон
Это не первый случай, когда я получил это. Раньше я боролся с ним в течение двух недель, в конце концов, инициировал для него билет поддержки Microsoft. В этом случае оказалось, что свойство ApplicationName в строке соединения слишком длинное (мы использовали полное имя сборки), и сокращение его облегчало проблему.
На этот раз существует
- Нет значения ApplicationName
- WinSocks находится в состоянии по умолчанию
- Антивирус (ESET) был отключен и не был проблемой.
- Ничего не было установлено между рабочим и нерабочим сеансом отладки
Наконец, по прихоти, я создал новый проект, единственной целью которого было подключение к этому же SQL-серверу. Я скопировал строку подключения из нерабочего проекта, в новый проект и подключился. Существует ли какое-то кеширование для каждого проекта? Что-то, что переживает Clean > Rebuild и перезапуск Visual Studio и Windows тоже?
Соответствующий код
public SqlConnection OpenSqlConnection(string connectionString)
{
var conn = new SqlConnection(connectionString);
conn.Open();
_connectionString = connectionString;
var sb = new SqlConnectionStringBuilder(_connectionString);
_server = sb.DataSource;
_database = sb.InitialCatalog;
return conn;
}
Строка соединения, которая передается, выводится из SqlConnectionStringBuilder в другом месте приложения. Строка подключения аналогична: "Data Source=SERVER;Initial Catalog=DATABASE;Integrated Security=True;Connect Timeout=60"