【发布时间】:2014-05-29 19:07:40
【问题描述】:
StatCentric.Tracker.Worker.dll 中出现“System.AccessViolationException”类型的未处理异常
附加信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
我已经阅读了 Stack Overflow 和各种博客上的大量帖子,但似乎无法找到解决方案。
我正在做一些非常基本的事情:
public void Execute(ITrackerRequestModel model)
{
PageviewRequest p = (PageviewRequest)model;
using (var db = new StatCentricEntities())
{
db.SetTimeout(60);
db.sp_Log_PageView2(p.SiteId, p.DateTimeUtc, p.vid, p.QueryString, p.p, p.t);
}
}
但每次我尝试调用 db.sp_Log_PageView2 时都会弹出此错误。这似乎只发生在我的工作角色内部(我使用的是 Windows Azure)。
另外值得注意的是,我使用的是 Windows Azure 模拟器,而且我使用的是 Windows 8.1。
我尝试了以下方法:
- 执行 winsocket 重置
- 禁用 JIT 调试(本机、脚本、托管)
- 在模块加载时禁用 JIT 调试
- 关注了一些旧帖子,这些帖子似乎是特定于 .NET 的修补程序 2.0 并已停产。
- 进行了内存诊断,确保它不是我的硬件。
我以管理员身份运行 Visual Studio 并连接到托管在 Azure 中的远程 SQL Server 数据库。
感谢任何有关如何解决或进一步诊断此问题的想法。
【问题讨论】:
-
你是否从不同的线程访问相同的上下文,因为 EF 不是线程安全的
-
它为每个数据库操作创建一个新的内容实例,因此不共享。
标签: c# entity-framework azure access-violation