【发布时间】:2013-07-18 21:58:10
【问题描述】:
我在执行一个简单的 linq 查询时遇到了一个奇怪的异常,该查询用 VB.NET 表示(对不起..)。异常是,正如标题所说:“System.AccessViolationException”,完整的异常消息链是
"System.Web.HttpUnhandledException: 异常类型 'System.Web.HttpUnhandledException' 被抛出。 ---> System.AccessViolationException:试图读或写保护 记忆。这通常表明其他内存已损坏。 "
奇怪的行为是:
- 异常随机抛出
- 异常仅在生产服务器上引发,而不是在同一测试服务器上
- 使用 LinqPad 对生产数据库执行的查询运行良好
这是完整的异常堆栈跟踪:
在堆栈跟踪中,已擦除的方法调用使用 Single() linq 方法进行查询。
我们认为该问题与使用 Windows 更新安装在生产服务器上的 KB 有关,但很明显,我们并不确切地知道它
知道什么是真正的问题吗? 提前致谢
【问题讨论】:
-
您认为这可能是因为生产服务器上安装了 KB。你找到那个了吗?另外,您是否比较了两种环境?这可能是由于不同的配置和/或安装的东西。您的 LINQ 查询,它看起来如何?
-
我们找到了什么 KB,我们在测试服务器上安装了相同的 .. 但是测试服务器可以工作,而生产不能。需要注意的是,我们在安装所有 KB 集后遇到了问题和异常。只是为了清楚,在安装 KBs 的前一天一切正常,但它自己却没有!是的,两台机器都是一样的......
-
test 和 prod 的服务器在安装的软件上可能相同,但权限和项目代码是否相同?无论如何,您可以回滚已安装的 KB 以排除它吗?是否仅在部署新代码时才会出现此错误?如果是这样,您可能需要确保运行此代码的 aspnet 或帐户具有读/写权限。
-
只是出于好奇……你为什么说“对不起”与 VB.net 合作?
-
@RolandDeschain 因为我们 VB.NET 开发人员喜欢为没有使用“真实”语言而幽默地道歉。我有时会这样做,我自己。 (这就像一个加拿大人为自己是加拿大人而道歉。)
标签: vb.net exception linq-to-sql