C# 对象引用未设置为对象的实例-不同系统上的不同行为

C# 对象引用未设置为对象的实例-不同系统上的不同行为,c#,.net,sql-server,wpf,C#,.net,Sql Server,Wpf,几年前,我遇到了一个问题,这个问题让我的编程知识一落千丈:) 怎么可能在我的开发机器和其他测试机器上一切都很好,但是在稍微不同的目标系统上它就不能正常运行 我正在尝试打开与MSSQLSERVER的数据库连接。然而,这不会发生。例外情况是重新布线“对象引用未设置为对象的实例…”(就像我只在目标系统上提到的那样,其他任何地方都没有问题) 异常指向下面代码中的connection.Open()行 private void openConnection() { strin

几年前,我遇到了一个问题,这个问题让我的编程知识一落千丈:)

怎么可能在我的开发机器和其他测试机器上一切都很好,但是在稍微不同的目标系统上它就不能正常运行

我正在尝试打开与MSSQLSERVER的数据库连接。然而,这不会发生。例外情况是重新布线“对象引用未设置为对象的实例…”(就像我只在目标系统上提到的那样,其他任何地方都没有问题)

异常指向下面代码中的connection.Open()行

    private void openConnection()
    {
        string connectionString = getConnectionString();
        try
        {
            connection = new SqlConnection(connectionString);
            connection.Open();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
我比较了系统。除了一些安全策略外,它们几乎相同。 两者都是win7 64位,具有相同的.net版本

我希望有人能帮我解决这个问题

提前谢谢

编辑:我在stacktrace中添加了连接字符串。。。。也许它能帮助任何人来帮助我

检查“新连接”行之后的“连接”是否为空,如果为空,则引发异常


您的环境中的连接字符串可能存在一些变化,但您未能解决这些变化。使用命令行数据库客户端从应该运行连接的服务器测试连接字符串;它可能无法连接。

我找到了!我只需将.NET版本更新到4.5.2,一切正常。 在运行了其他一些测试之后,我发现真正的异常是accessviolationexception,不知何故,它似乎被nullreferenceexception所覆盖。然而,我仍然不知道为什么其他系统在.NET版本4.5.1上没有这些问题,但是经过几天的调试,我不在乎。非常感谢你的建议


问候

完整的堆栈跟踪可能会为您提供更多信息。例如,配置中可能缺少连接字符串。安全策略很可能是问题的原因。您的连接字符串似乎为空,可能是
getConnectionString()
方法(对于安全权限)无法读取配置文件。我现在没有访问堆栈跟踪的权限。我还用硬编码的连接字符串进行了尝试。这不是错误的部分。您使用的是哪种RDBMS?SqlConnection的ctor接受null或空字符串而不引发异常。调用Open()会导致InvalidOperationException。所以Open()不太可能抛出NullReferenceException。好像我以前所有的人都能连接到数据库。但我会试试ofc。