问题描述
|
我的数据库连接不起作用,有人可以告诉我为什么吗?
我是从VS 2010中的单元测试运行的。简单的Assert.IsTrue(testDbConnection)失败了。
我也尝试过以普通模式作为Web应用程序运行它,但我遇到了同样的异常。
请注意,XXXXX当然是有目的的。
web.config
<connectionStrings>
<add name=\"ApplicationServices\"
connectionString=\"data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\\aspnetdb.mdf;User Instance=true\"
providerName=\"System.Data.SqlClient\" />
<add name=\"DomainDatabase\" connectionString=\"Data Source=XXXXXXXXXX;Initial Catalog=domain;Persist Security Info=True;User ID=campain_xxx;Password=XXXXXXXXX\" providerName=\"System.Data.SqlClient\" />
</connectionStrings>
我的测试方法
public bool testDBConnection()
{
try
{
SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings[\"DomainDatabase\"].ConnectionString);
sqlCon.Open();
sqlCon.Close();
return true;
}
catch(Exception e)
{
Console.WriteLine(e);
return false;
}
}
这给了我例外
System.NullReferenceException: Object reference not set to an instance of an object.
解决方法
由于测试或Web应用程序均未运行,因此您看到的问题很可能是因为未加载配置。我怀疑以下...
ConfigurationManager.ConnectionStrings[\"DomainDatabase\"]
...返回null。当您尝试访问该null对象(引用)上的ConnectionString属性时,将引发NullReferenceException。我将验证您的connectionStrings配置是否与此处定义的定义匹配:
您可以通过以下测试来确认未加载设置:
[TestMethod]
public void VerifyThatMyDatabaseConnectionStringExists()
{
Assert.IsNotNull(ConfigurationManager.ConnectionStrings[\"DomainDatabase\"]);
}
如果此测试失败,请使用正确的配置将app.config添加到测试项目中。当您...可以从我手中拿走这个小石子-不用等待,错误的引用-该测试通过时,您就会知道您已经解决了这个问题。
提示:此答案建议您应该编写测试来验证您的设置是否存在,以防止疯狂。
,尝试将具有connectionString的app.config文件复制到Test-project中,它可以工作!