在某些服务器上,LINQ-to-SQL DataContext为空
本文关键字:LINQ-to-SQL DataContext 为空 服务器 | 更新日期: 2023-09-27 18:04:56
我有一个非常不寻常的问题。我有ASP。NET应用程序,大量使用LINQ-to-SQL,并且在大多数服务器上运行良好。然而,该应用程序存在于同一网络上的另一台服务器上,并且在最近的更新之后,每当我打开一个新的DataContext时,如下所示:
LINQDataContext dc = new LINQDataContext();
dc对象是空的,所以我得到对象引用错误试图使用它。我无法在我的开发机器或应用程序所在的其他服务器上复制此操作,因此我对为什么会出现这种情况感到困惑。什么好主意吗?
由于您使用的是DataContext的默认构造函数,因此连接字符串是从web.config中读取的。因此,我们可以建议该服务器上的应用程序具有不同的配置,而没有正确的连接字符串。但在我们的项目中,还有一件事我们曾经遇到过。在新版本的ASP中,连接字符串存储在配置文件中的位置发生了变化。我手头没有代码,但是您可以通过使用将连接字符串作为参数的构造函数来测试我的建议。从配置中手动读取连接字符串,或者只是硬编码用于测试目的。
这样的事情不可能发生。在标准。net类型上调用new
操作符时,有两种可能的结果:
- 构造函数正常返回并赋值
- 构造函数抛出异常,未赋值
除非您立即catch
异常并忽略它,否则您可以确定该变量已被赋值。这意味着你的问题可能出在别的地方。
(从技术上讲,还有第三种选择——构造函数永远不会返回并无限循环,但这与这里无关。)