Solved

Getting A Windows Service To Read Its Own COnfig File Not Machine.Config

Posted on 2008-06-23
13
897 Views
Last Modified: 2013-11-29
I need to read my own config file here is my code which fails with either a invalid exepath - or it just finds no appsettings.  LearnedOne - I thought I should post the question apart from my first. I have given you the points for the help on my first question.

Here is my code -  this is a windows service that I am debugging via a fom

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="DatabaseUpdaterRemotePath" value="Y:\IPB\Dch" />
    <add key="DatabaseUpdaterLocalPath" value="C:\IPXML\Dch" />
    <add key="DatabaseUpdaterFilter" value="*.XML*" />
    <add key="DatabaseUpdaterIncludeSubs" value="true" />
    <add key="DatabaseName" value="Disconnected.MDB"/>
  </appSettings>
</configuration>

onfiguration config = ConfigurationManager.OpenExeConfiguration(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase);

and this
//for testing my service
Configuration config = ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath)

Then
RemotePath = config.AppSettings["DatabaseUpdaterRemotePath"].ToString();

this blows up and the appsettings are empty - it is automatically pulling from machine.config
0
Comment
Question by:DylanJones1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 5
13 Comments
 

Author Comment

by:DylanJones1
ID: 21850221
Is reading a config file from a windows service that uncommon?
0
 
LVL 53

Accepted Solution

by:
Dhaest earned 500 total points
ID: 21853655
1) If your app is a Windows Service, it will expect its Config file to be in %WINDIR%\system32. So make sure that during or after an install, you copy the config file to that directory, your service should run fine.
2) //Set current directory to assembly folder
Environment.CurrentDirectory = System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetEntryAssembly().Location);

at the start of my service
0
 

Author Comment

by:DylanJones1
ID: 21856086
Dhaest,

Thanks for your response.  I am not certain how to work in the line you proviided.  But... your code returns the debug path  \debug  which is what I expect and also what is returned by

System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

and what the file path property is set to on my config object when I run

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
or
Configuration config = ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath);

All three approaches return the same path ...\debug but for all three the hasFile property is false and the file name that they point to are:

myconfig.exe.config    which does not exit.  

And this line with reference to the newly created config  

config.AppSettings["RemotePath"].ToString();

Will not even compile.


this is the code that errors

 Configuration config = ConfigurationManager.OpenExeConfiguration(System.Windows.Forms.Application.ExecutablePath);
           
 //config.AppSettings["RemotePath"].ToString();









from above.

Then when I run the

0
MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

 

Author Comment

by:DylanJones1
ID: 21856255
Sorry those last two lines are should have been deleted.
0
 

Author Comment

by:DylanJones1
ID: 21857522
Anybody?  Do I have to change the build or output properties of the config file?
0
 
LVL 53

Expert Comment

by:Dhaest
ID: 21857710
Did you compile your project as Release ?
0
 

Author Comment

by:DylanJones1
ID: 21858447
I have bult for both and my config file sit in the bin\debug folder
0
 
LVL 53

Expert Comment

by:Dhaest
ID: 21858475
Did you install the application ? When you test it in visual studio, it's normal that it goes to the bin\debug folder because the running exe is there !
0
 

Author Comment

by:DylanJones1
ID: 21859111
Right.  I am debugging  I am testing my service  using a test harness  while in debug mode  
0
 
LVL 53

Expert Comment

by:Dhaest
ID: 21860004
You'll need to create an installer, install the application on a testserver (or other pc) and test it if it reads your config-file from the right directory (%WINDIR%\system32)
0
 

Author Comment

by:DylanJones1
ID: 21860014
I'll give it a go. Thanks
0
 
LVL 53

Expert Comment

by:Dhaest
ID: 21862945
Did you try it ?
0
 

Author Comment

by:DylanJones1
ID: 21863306
Yes  It didn't work.  But as soon as I right clicked and said Add New Item chose application config file copy and pasted my config contents to it and removed the other config from my project it worked like a charm.   Odd....
0

Featured Post

[Webinar] Code, Load, and Grow

Managing multiple websites, servers, applications, and security on a daily basis? Join us for a webinar on May 25th to learn how to simplify administration and management of virtual hosts for IT admins, create a secure environment, and deploy code more effectively and frequently.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
It’s been over a month into 2017, and there is already a sophisticated Gmail phishing email making it rounds. New techniques and tactics, have given hackers a way to authentically impersonate your contacts.How it Works The attack works by targeti…
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

734 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question