数据层中的静态变量,通过webservice

时间:2012-04-09 14:24:56

标签: c# asp.net

我被要求接管一个应用程序,在1-2个用户测试它的情况下运行良好,但是一旦我们通过更大的测试,它就开始崩溃了。我们看到随机超时,以及有关代码无法找到它预期要绑定到的某些列的消息,但只有1-2个用户正在使用。

该应用程序的结构是:

--------------
| WebSite    |
--------------
| WebService |
--------------
| Database   |
--------------

网站通过网络服务与数据库进行所有通信。通过webservice代码,我看到它使用一个类来完成数据库工作,并将其声明为类级变量:

private static SqlConnection cn;

然后在页面上需要连接的所有方法中使用它。作为静态,这意味着所有用户只有一个实例是正确的吗?我只想确认我正确看到它,因为我们删除它并正在测试它。看到这条线给我意味着连接对象的1个实例在所有用户之间共享,这可以解释为什么1-2个用户可以使用,但是用户数越多,排队等待的人越多,最终导致随机错误。只是想确认我是否正确理解了这一点。

感谢。

1 个答案:

答案 0 :(得分:5)

是的,将跨用户访问静态变量。问题的真正根源是缺乏线程安全性,但不一定是共享连接对象。