空错误读取连接字符串
Null Error Reading Connection String
我在尝试通过 ConnectionCtrings["MyDB"].connectionstring
连接到数据库时收到空引用异常。
这是在 using 语句中,与我在许多其他项目中使用的代码相同,但它一直告诉我空引用,我不知道为什么。
命名的连接字符串在同一项目的 web.config 中正确命名,因此我预计不会出现权限问题。
我错过了什么?
编辑:
我已经看到了建议的答案,这些是通过将字符串放在连接字符串所在的 Web.Config 中来解决的。
代码:
Web.config
中的连接字符串
<connectionStrings>
<add name="MyDB" connectionString="Data Source=192....; Initial Catalog=ProjectDb; Integrated Security=false; User Id=user; Password=password;" providerName="System.Data.SqlClient" />
</connectionStrings>
访问数据库的函数
public static Company RetrieveCompany(int id)
{
var cmp = new Company();
try
{
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString))
{
con.Open();
using (var cmd = new SqlCommand("RetreiveEmailProc", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@companyId", id);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{ // code omitted }
}
}
}
catch(Exception ex)
{
}
return cmp;
}
我认为这与您使用 ConfigurationManager
而不是 WebConfigurationManager
有关。您的代码可能驻留在具有不同 web.config
的另一个文件夹中,并且 ConfigurationManager
无法处理该继承问题。
我在尝试通过 ConnectionCtrings["MyDB"].connectionstring
连接到数据库时收到空引用异常。
这是在 using 语句中,与我在许多其他项目中使用的代码相同,但它一直告诉我空引用,我不知道为什么。
命名的连接字符串在同一项目的 web.config 中正确命名,因此我预计不会出现权限问题。
我错过了什么?
编辑: 我已经看到了建议的答案,这些是通过将字符串放在连接字符串所在的 Web.Config 中来解决的。
代码: Web.config
中的连接字符串<connectionStrings>
<add name="MyDB" connectionString="Data Source=192....; Initial Catalog=ProjectDb; Integrated Security=false; User Id=user; Password=password;" providerName="System.Data.SqlClient" />
</connectionStrings>
访问数据库的函数
public static Company RetrieveCompany(int id)
{
var cmp = new Company();
try
{
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString))
{
con.Open();
using (var cmd = new SqlCommand("RetreiveEmailProc", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@companyId", id);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{ // code omitted }
}
}
}
catch(Exception ex)
{
}
return cmp;
}
我认为这与您使用 ConfigurationManager
而不是 WebConfigurationManager
有关。您的代码可能驻留在具有不同 web.config
的另一个文件夹中,并且 ConfigurationManager
无法处理该继承问题。