提问人:daxu 提问时间:6/15/2022 更新时间:6/15/2022 访问量:380
如何检查无效操作,错误连接已关闭是否在System.Data.SqlClient中修复
How to check if Invalid Operation, Error connection is closed is fixed in System.Data.SqlClient
问:
在高负载期间,我们的应用程序会随机抛出以下错误:
System.Data.SqlClient.SqlConnection.GetOpenTdsConnection
outerType
System.AggregateException
outerMessage
A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread.
innermostType
System.InvalidOperationException
innermostMessage
Invalid operation. The connection is closed
我调查了一下,看起来这个问题已在 Microsoft.Data.SQLClient 上修复
我们的代码来自旧世界,仍然使用 System.Data.SqlClient.Is 有一种方法可以知道System.Data.SqlClient中是否存在相同的问题并在新版本中修复?或者我们将不得不使用 Microsoft.Data.SQLClient?(我们之前尝试过Microsoft.Data.SqlClient,并且存在行为差异)
答:
0赞
Jalpesh Vadgama
6/15/2022
#1
如果您正在使用任务,您可以执行以下操作,我不确定您是否会得到您想要的所有信息,但您将获得有关未处理异常的更多信息
public static void LogExceptions(this Task task)
{
task.ContinueWith( t =>
{
var aggException = t.Exception.Flatten();
foreach(var exception in aggException.InnerExceptions)
LogException(exception);
},
TaskContinuationOptions.OnlyOnFaulted);
}
您可以像下面这样使用
Task.Factory.StartNew( () =>
{
// Do your work...
}).LogExceptions();
或者,您可以使用 获取未观察到任务异常的任务异常。TaskScheduler.UnobservedTaskException
有关更多信息,请参阅以下链接
通过等待任务或访问其 Exception 属性,都无法观察到任务的异常。因此,未观察到的异常是
评论
0赞
daxu
6/15/2022
谢谢,但我不认为这是我要问的
评论
.Wait
await