Pav*_*l K 14 .net c# sqlconnection .net-4.7.2
我面临着非常奇怪的问题.鉴于以下代码:
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");
}
Run Code Online (Sandbox Code Playgroud)
它运行良好很长一段时间,但在最新版本的Windows 10(1803)上有.NET版本4.7.03056版本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()
Run Code Online (Sandbox Code Playgroud)
这会在第二个任务中崩溃,如果我删除它的任何分配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;
}
Run Code Online (Sandbox Code Playgroud)
它与Azure有某种关联,与源代码中的内容完全不同.
我在这里发布了这个问题并将等待回复.
小智 2
这是 .NET Framework 4.7.2 中 System.Data 中记录的已知问题 https://github.com/Microsoft/dotnet/blob/master/releases/net472/dotnet472-known-issues.md
该问题目前正在解决,并将在 .NET Framework 4.7.2 的未来更新中提供
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |