System.NullReferenceException with windows service of DB connection string

3.7k views Asked by At

I am writting a windows service, and I catch an exception using try:

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

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

The output is:

get the connection string failed,detail:System.NullReferenceException: not set an instance with a object reference.

It can't get the connection string correctly.

And this is my configuration file(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>

Where is wrong? Why can't get the connection string?

I've been searching from google and can't find where is wrong?

Some reason can cause the problem?

The stack track:

 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

There are 3 answers

0
Dolphin On BEST ANSWER

It is because your program location don't have a programName.exe.config file,the ConfigurationManager can't access the content,so make sure the file exist.

Or you can link there to know more about ConfigurationManager :

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

0
Liath On

You're looking in the wrong part of the ConfigurationManager.

Try putting the ConnectionString in the ConnectionStrings area of the web.config and calling

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

If you're still having issues put a breakpoint on the line and see which ConnectionStrings are being loaded.

1
Valin On

Try this one:

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