System.NullReferenceException,带有DB连接字符串的Windows服务

时间:2013-12-13 13:43:00

标签: c# configurationmanager

我正在写一个Windows服务,我使用try:

捕获异常
try
{
    connStr = System.Configuration.ConfigurationManager.AppSettings["connStr"].ToString();
}
catch (Exception ex)
{

    logger.Error("get the connection string failed,detail:" + ex.ToString());
}

输出结果为:

  

获取连接字符串失败,详细信息:System.NullReferenceException:未设置带有对象引用的实例。

无法正确获取连接字符串。

这是我的配置文件(app.config):

<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
        <add key="connStr" value="Data Source=Dolphin-PC;Initial Catalog=jsptpd_SYS;Persist Security Info=True;User ID=sa;Password=ccir"/>
    </appSettings>
</configuration>

哪里错了?为什么无法获取连接字符串?

我一直在谷歌搜索,找不到哪里错了?

某些原因会导致问题吗?

堆栈轨道:

 2013-12-13 21:37:19,895 [17] ERROR ApplicationInfoLog [(null)] <(null)>
   - get connection string failed,detail:
     System.NullReferenceException:  not set an instance with a object reference.
     on Jsptpd.JobScheduler.jsptpdJobScheduler.OnStart(String[] args) location     

 D:\jsptpd\Code\jsptpdJobScheduler\jsptpdJobScheduler\jsptpdJobShedule.cs:line 41

3 个答案:

答案 0 :(得分:2)

试试这个:

connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

答案 1 :(得分:2)

这是因为您的程序位置没有 programName.exe.config 文件,ConfigurationManager无法访问该内容,因此请确保该文件存在。

或者您可以在那里链接以了解有关ConfigurationManager的更多信息:

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx

答案 2 :(得分:1)

您正在查看ConfigurationManager的错误部分。

尝试将ConnectionString放在web.config的ConnectionStrings区域并调用

connStr = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"];

如果您仍有问题,请在该行上设置断点并查看正在加载的ConnectionStrings。