NullReferenceException внутри.NET-кода SqlConnection.CacheConnectionStringProperties() - программирование
Подтвердить что ты не робот

NullReferenceException внутри.NET-кода SqlConnection.CacheConnectionStringProperties()

Я столкнулся с действительно странной проблемой. Учитывая приведенный ниже код:

static void Main()
{
    var c = new System.Data.SqlClient.SqlConnection();

    c.ConnectionString = "Data Source=SOME_NAME;Initial Catalog=SOME_DB;Integrated Security=True";
    c.ConnectionString = ""; //null also triggers exception

    Console.WriteLine("Success");
}

Он отлично работал в течение длительного времени, но на новейшей версии Windows 10 (1803), которая имеет версию.NET 4.7.03056 Release 461808 (кажется, 4.7.2), она выходит из строя со следующим исключением:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Data.SqlClient.SqlConnection.CacheConnectionStringProperties()
   at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
   at TestCacheConnectionStringProperties.Program.Main()

Это приведет к сбою во втором назначении, если я удалю любое из назначений ConnectionString оно работает нормально.

Я просмотрел источники и не нашел места, где может произойти NullReferenceException (однако источники, похоже, для.NET Framework 4.7.1, поэтому smth может измениться).

Теперь вопрос в том, что вызывает эту проблему? Это ошибка.NET? Если да - как его решить?

ОБНОВЛЕНИЕ: Согласно комментариям - спасибо очень много ребят - проблема вызвана этими линиями (декомпилировалась):

private void CacheConnectionStringProperties()
{
  SqlConnectionString connectionOptions = this.ConnectionOptions as SqlConnectionString;
  if (connectionOptions != null)
    this._connectRetryCount = connectionOptions.ConnectRetryCount;

  //Seems like this is causing the bug because it is not inside of null-check-if for connectionOptions variable
  if (this._connectRetryCount != 1 || !ADP.IsAzureSqlServerEndpoint(connectionOptions.DataSource))
    return;
  this._connectRetryCount = 2;
}

Это как-то связано с Azure и сильно отличается от того, что доступно в источниках.

Я разместил здесь эту проблему и буду ждать ответа.

4b9b3361