How to access web.config in SharePoint timer job

 

In SharePoint customization we have the requirements to write custom code for
web parts, timer jobs etc. In this post I want to tell you some interesting
things in SharePoint. I have written some timer jobs to deploy into my
SharePoint server to match some requirements or to solve some problems.


My requirement is, I want to access the web application or web site
configuration [web.config] file in the SharePoint timer job. But, the
limitations in SharePoint stops me to access the configuration files in timer
job. Below are the problems I faced.


  • SharePoint timer job is running in different process named OWSTIMER.EXE.
  • SharePoint web application or site will run with the help of process
    W3WP.EXE.
  • So, the application configuration file is associated with the W3WP.EXE, so
    there is no way to access the web.config file in the owstimer.exe process at
    all. The context is completely different and out of domain. So, we need to call
    or access the web.config file explicitly in timer job. How to?
  • Remember, always C# is completely object oriented and you can access
    everything through objects.
  • Usually the timer job installed as a feature. And all the logic of the timer
    job will go inside the Execute() method. So, write below statements in that
    method and access the complete web.config file. Below is the example of
    accessing appsettings.
 SPWebApplication webApplication = this.Parent as SPWebApplication;  
Configuration config = WebConfigurationManager.OpenWebConfiguration("/", webApplication.Name);  
String appValue = config.AppSettings.Settings["appSettingKey"].Value;
 
WebConfigurationManager is the class which is in the namespace
Systen.Web.Configuration. This way, you can access the config settings from a
web.config of a SharePoint web site. Hope you understood this well and please
let me know what you think.