Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 某些服务器上的LINQ到SQL DataContext为空_C#_Asp.net - Fatal编程技术网

C# 某些服务器上的LINQ到SQL DataContext为空

C# 某些服务器上的LINQ到SQL DataContext为空,c#,asp.net,C#,Asp.net,我有一个非常不寻常的问题。我有一个ASP.NET应用程序,它大量使用LINQ到SQL,并且在大多数服务器上运行良好。但是,应用程序存在于同一网络上的另一台服务器上,并且在最近的更新之后,每当我打开一个新的DataContext时,如下所示: LINQDataContext dc = new LINQDataContext(); dc对象为null,因此我在尝试使用它时遇到对象引用错误。我无法在我的开发机器上或应用程序所在的其他服务器上复制它,因此我对为什么会这样感到困惑。有什么想法吗?像这样的

我有一个非常不寻常的问题。我有一个ASP.NET应用程序,它大量使用LINQ到SQL,并且在大多数服务器上运行良好。但是,应用程序存在于同一网络上的另一台服务器上,并且在最近的更新之后,每当我打开一个新的DataContext时,如下所示:

LINQDataContext dc = new LINQDataContext();

dc对象为null,因此我在尝试使用它时遇到对象引用错误。我无法在我的开发机器上或应用程序所在的其他服务器上复制它,因此我对为什么会这样感到困惑。有什么想法吗?

像这样的事情是不会发生的。在标准.Net类型上调用
new
运算符时,有两种可能的结果:

  • 构造函数正常返回,并赋值
  • 构造函数引发异常,未赋值
  • 除非您
    立即捕获
    异常并忽略它,否则可以确保变量已分配。这意味着你的问题可能在其他地方


    (从技术上讲,还有第三个选项–构造函数从不无限返回和循环,但这与此处无关。)

    因为您使用的是DataContext的默认构造函数,所以连接字符串是从web.config读取的。因此,我们可以建议该服务器上的应用程序在没有正确连接字符串的情况下具有不同的配置。但在我们的项目中,还有一件事我们曾经面临过。在新版本的ASP中,配置文件中连接字符串存储的位置已更改。我手头没有代码,但您可以使用作为参数来测试我的建议。手动从配置中读取连接字符串,或者只是出于测试目的对其进行硬编码。

    实际上,在精心设计的边缘情况下,您可以为类设置“new”返回null,但不能为数据上下文设置。只提到它的疯狂(它不适用于这个问题)。如果你愿意的话,我来举个例子;)编辑:它在这里:
    dc
    是字段(类变量)还是局部(方法变量)?