Solved

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

Posted on 2008-06-23
13
915 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
10 Questions to Ask when Buying Backup Software

Choosing the right backup solution for your organization can be a daunting task. To make the selection process easier, ask solution providers these 10 key questions.

 

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

 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

Question has a verified solution.

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

In earlier versions of Windows (XP and before), you could drag a database to the taskbar, where it would appear as a taskbar icon to open that database.  This article shows how to recreate this functionality in Windows 7 through 10.
Access custom database properties are useful for storing miscellaneous bits of information in a format that persists through database closing and reopening.  This article shows how to create and use them.
Learn how to number pages in an Access report over each group. Activate two pass printing by referencing the pages property: Add code to the Page Footers OnFormat event to capture the pages as there occur for each group. Use the pages property to …
What’s inside an Access Desktop Database. Will look at the basic interface, Navigation Pane (Database Container), Tables, Queries, Forms, Report, Macro’s, and VBA code.

636 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