LINQ to SQL - 已经有一个与此命令关联的开放数据读取器,必须先关闭它

时间:2010-08-14 08:15:19

标签: asp.net linq-to-sql datacontext sqldatareader

最近我在我的ASP.Net项目的静态类中实现了Linq to SQL,这是一个实用程序类,用于获取有关站点加载的一些信息。当我使用静态linqtosql datacontext时,我只在实时环境中得到了上述错误,但从未在UAT或QA站点上遇到过这个问题。 (这意味着只有在有大量负载时才会发生此问题。)

所以我用Google搜索并找到了这篇文章here。所以我做的是我制作了我的页面级datacontext变量,并在每次调用它们时将它们传递给静态方法。我所做的是正确的,是否会解决这个问题?/

1 个答案:

答案 0 :(得分:2)

在ASP.Net中,每个请求都是一个单独的线程。因此,如果您使用静态资源,则必须处理并发。在您的情况下,似乎两个数据站使用相同的连接。由于您的类是静态的,当服务器负载很重时,可能会发生两个请求同时使用相同的datacontext。

如果您确实需要静态资源,则应使用lock statement确保只有一个请求同时访问资源。