NullReferenceException внутри .NET-кода SqlConnection.CacheConnectionStringProperties () - PullRequest
0 голосов
/ 04 мая 2018

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

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 Version 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, поэтому что-то может измениться).

Теперь вопрос - что вызывает эту проблему? Это ошибка .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 и сильно отличается от того, что доступно в источниках.

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

1 Ответ

0 голосов
/ 10 мая 2018

Это документированная известная проблема в System.Data в .NET Framework 4.7.2. https://github.com/Microsoft/dotnet/blob/master/releases/net472/dotnet472-known-issues.md

Проблема в настоящее время решается и будет доступна в будущих обновлениях .NET Framework 4.7.2

...