Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ to SQL:TargetInvocationException中包装的间歇性AccessViolationException_C#_.net_Linq_Linq To Sql_Crash - Fatal编程技术网

C# LINQ to SQL:TargetInvocationException中包装的间歇性AccessViolationException

C# LINQ to SQL:TargetInvocationException中包装的间歇性AccessViolationException,c#,.net,linq,linq-to-sql,crash,C#,.net,Linq,Linq To Sql,Crash,几个星期以来,我们的ASP.NETWeb应用程序遇到了W3WP崩溃。这些是在我们的Web服务器更新之后开始的。我们的应用程序没有改变,多年来一直保持稳定。 我们的情况似乎很相似。虽然在我们的例子中,查询在99.9%的使用时间内运行良好,但也可能与此相关 我们使用了大量未编译的LINQ查询,并尝试编译它们是否可以防止这些崩溃。车祸的数量急剧减少,但仍然会发生 同样,将查询包装在一个try catch中,然后捕获TargetInvocationException也不起作用。未捕获异常 发生崩溃时,我

几个星期以来,我们的ASP.NETWeb应用程序遇到了W3WP崩溃。这些是在我们的Web服务器更新之后开始的。我们的应用程序没有改变,多年来一直保持稳定。
我们的情况似乎很相似。虽然在我们的例子中,查询在99.9%的使用时间内运行良好,但也可能与此相关

我们使用了大量未编译的LINQ查询,并尝试编译它们是否可以防止这些崩溃。车祸的数量急剧减少,但仍然会发生

同样,将查询包装在一个
try catch
中,然后捕获
TargetInvocationException
也不起作用。未捕获异常

发生崩溃时,我们会收到WER报告,并可以检索崩溃转储。
未编译查询转储中的堆栈跟踪通常如下所示:

位于System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数)
位于System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象对象obj,对象[]参数,对象[]参数)
在System.Delegate.DynamicInvokeImpl(对象[]args)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInvocation(调用表达式调用)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitePression(表达式exp)
位于System.Data.Linq.SqlClient.QueryConverter.VisitBinary(二进制表达式b)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitePression(表达式exp)
位于System.Data.Linq.SqlClient.QueryConverter.VisitBinary(二进制表达式b)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
在System.Data.Linq.SqlClient.QueryConverter.Visit(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitWhere(表达式序列,LambdaExpression谓词)
在System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperator调用(MethodCallExpression mc)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitWhere(表达式序列,LambdaExpression谓词)
在System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperator调用(MethodCallExpression mc)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitSelect(表达式序列,LambdaExpression选择器)
在System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperator调用(MethodCallExpression mc)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.VisitDistinct(表达式序列)
在System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperator调用(MethodCallExpression mc)
位于System.Data.Linq.SqlClient.QueryConverter.VisitInner(表达式节点)
位于System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(表达式节点)
位于System.Data.Linq.SqlClient.SqlProvider.BuildQuery(表达式查询、SqlNodeAnnotations注释)
在System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式查询)
位于System.Data.Linq.DataQuery'1.System.Collections.Generic.IEnumerable.GetEnumerator()
在System.Linq.Buffer'1..ctor(IEnumerable'1源)处
位于System.Linq.Enumerable.ToArray[TSource](IEnumerable'1源)

编译查询转储中的堆栈跟踪如下所示:

位于System.RuntimeMethodHandle.InvokeMethod(System.Object,System.Object[],System.Signature,Boolean)
在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object,System.Object[],System.Object[])中
在System.Delegate.DynamicInvokeImpl(System.Object[])中
位于System.Data.Linq.SqlClient.SqlProvider.AssignParameters(System.Data.Common.DbCommand,System.Collections.ObjectModel.ReadOnlyCollection`1,System.Object[],System.Object)
在System.Data.Linq.SqlClient.SqlProvider.Execute(System.Linq.Expressions.Expression,QueryInfo,System.Data.Linq.SqlClient.IOObjectReaderFactory,System.Object[],System.Object[],System.Data.Linq.SqlClient.ICompiledSubQuery[],System.Object)
位于System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(System.Linq.Expressions.Expression,QueryInfo[],System.Data.Linq.SqlClient.IObjectReaderFactory,System.Object[],System.Data.Linq.SqlClient.ICompiledSubQuery[])
在System.Data.Linq.SqlClient.SqlProvider+CompiledQuery.Execute(System.Data.Linq.Provider.IProvider,System.Object[])中执行
位于System.Data.Linq.CompiledQuery.ExecuteQuery(System.Data.Linq.DataContext,System.Object[])

有人知道是什么改变了我们的应用程序的行为吗?我们知道这是一个“更新”(但不确切是哪一个),但我们更感兴趣的是它的技术背景。

当然,我们也欢迎一个解决方案来防止我们的应用程序崩溃

在没有看到任何Linq代码的情况下很难判断,但我大胆猜测,这是您正在使用的Linq库的内部(强制转换)错误

正如您提到的,您最近升级了
(您从哪个.NET版本升级到哪个版本?)

我有过类似的问题,通过安装windows更新解决了,您说您已经完成了,并取得了一些成功


尝试识别导致错误的用户输入。试着自己处理这个问题,而不是依赖Linq,我想我会发布一个解决方案,我们发现了这个问题,因为我们最近开始遇到这个问题

我们有很多服务器运行我们的代码很好,但是只有一个服务器因为这个错误每周崩溃几次。我相信这个服务器是在.NET4.5.2上的

我们用微型计算机开了一张票