【发布时间】:2016-02-15 21:35:25
【问题描述】:
在使用 LINQ to SQL(不是实体框架)的混合 asp.net Web 应用程序框架 4.5.1 中,我遇到了异常
“System.Data.Linq.dll 中发生了“System.StackOverflowException”类型的未处理异常”
任何致电DataContext.SubmitChanges()。
每次调用 SubmitChanges() 都会导致错误,更改特定实体无关紧要。立即抛出错误(与大多数 StackOverflow 异常不同,错误代码溢出堆栈时通常需要几秒钟才能发生)。
asp.net Web 应用程序正在我的本地主机上使用 Visual Studio 2013 在 IIS express 中运行。数据库是 SQL Server 2005。
我的问题是,如何在这种环境中调试 StackOverflow 异常?现在我得到的只是上面的错误信息。
- 事件查看器注意到浏览器崩溃(在 IE 11 和 Chrome 中都会发生),但没有关于 LINQ to SQL 异常。
- SQL Server 进程监视器未注册任何数据库调用。
- 我有一个连接到我的 DataContext 的日志,但它没有记录任何内容。
看起来堆栈溢出发生在System.Data.dll 内部,在任何数据库调用发生之前以及可以记录任何内容之前。
这在几个小时前突然开始发生,在 Windows 更新运行并且机器重新启动之后。这可能是巧合。
还有一些非常奇怪的事情:我们店里有四个开发人员,他们都使用 Visual Studio 2013。我们中的两个人突然开始遇到这个问题,而我们中的两个人从来没有遇到过。我们都在运行相同的代码并访问相同的数据库。我们两个遇到问题重新启动,问题在一台机器上消失了,但在我的机器上仍然出现。
除了重新启动之外,我还从机器中删除了项目并将其从源代码管理中拉下来,以便它与我的 3 位同事所拥有的相同,删除了我机器上的所有临时 Internet 文件,并删除了所有我的 AppData\Local\temp 文件用于我的登录。
有没有办法调试这个问题?
发生异常时调用堆栈的剪辑(对 VisitExpression 等的调用重复数十次直到结束)。
【问题讨论】:
-
它是特定于一个上下文类还是更多?
-
@GertArnold,不,不特定于任何上下文类。对 SubmitChanges() 的任何调用都会引发异常。改变什么数据库实体无关紧要。
-
如果您连接到 Linqpad 中的数据库(在后台使用 LINQ to SQL)怎么办?
-
当 SO 发生时,您可以附加调试器并查看调用堆栈窗口吗?
-
@usr: 是的,我在 Visual Studio 中运行它,所以我不需要附加调试器,我在异常发生时添加了调用堆栈的图片。
标签: asp.net sql-server linq-to-sql stack-overflow