2011-05-16 41 views
2

我试图使这个简单的呼叫连接字符串:获取从app.config中

DataContext dc = new DataContext(ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString) 

这是我的app.config文件:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="MyDB" connectionString="Server=STEVEN-PC;Database=MyDB;Trusted_Connection=yes;" /> 
    </connectionStrings> 
</configuration> 

但我发现了一个错误: 未将对象引用设置为对象的实例。

找不到连接字符串。我究竟做错了什么?

+0

当然你的app.config是作为可执行相同的路径? – Amy 2011-05-16 01:30:56

+0

@Inuyasha - 我有几个项目的Visual Studio解决方案。 app.config和我打电话来的文件在同一个项目中。 – Steven 2011-05-16 01:32:18

+0

我总是喜欢通过做一些事情来确认我的假设,比如将实例化dataContext的调用分离到app.config。只是为了确保那是我失败的地方。你可能是对的,但偶尔会发现一些意想不到的事情。 – 2011-05-16 01:36:02

回答

15

一个常见的错误是尝试从引用项目而不是可执行项目(网站或.exe项目)的app.config中读取连接字符串。您可能需要将包含连接字符串的配置设置复制到主配置文件。

+0

这是问题,谢谢。 – Steven 2011-05-16 01:49:50

1

仔细检查构建目录中配置文件的存在和内容。如果配置文件就位,该代码应该可以正常工作。

你也可以把连接字符串放到一个局部变量中,这样你就可以确定空引用异常发生在你认为的地方。

+0

第二段正是我的想法。我会尝试。 – 2011-05-16 01:44:13

+0

我将连接字符串设置为局部变量,它是我得到空引用异常的地方。 – Steven 2011-05-16 01:48:33

0

您可能需要指定的providerName:

<add name="MyDB" connectionString="Server=STEVEN-PC;Database=MyDB;Trusted_Connection=yes;" providerName="System.Data.SqlClient" /> 
+0

这是没有必要的,即使它被指定,他的代码不访问该属性。 – Josh 2011-05-16 01:48:48