На прошлой неделе мы перенесли нашу производственную среду с .NET Framework 4.6.2 на .NET Core 2.2. Все работает как положено, за исключением того, что теперь мы часто получаем следующую ошибку при подключении к базе данных:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
Наша производственная среда использовалась в плане службы приложений Windows 32 bit в Azure. В этой среде у нас почти никогда не было проблем с рукопожатиями перед входом в систему.
Теперь, внезапно после того, как мы перешли на 64-битные контейнеры Linux, эти ошибки начинают появляться несколько раз в день.
Я искал в Интернете решение, но не могу его найти. Кто-нибудь имеет представление о том, что мы должны делать?
Это наша строка подключения:
Server=tcp:{server_url},1433;Data Source={server_url};Initial Catalog={database};Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Max Pool Size=500;
РЕДАКТИРОВАТЬ: Просто чтобы быть ясно: большинство подключений к базе данных SQL успешно. У нас много пользователей на нашем сервере. Однако количество неудачных подключений значительно увеличилось.