Share Config file for Web and Window App (Best Way)

↘锁芯ラ 提交于 2019-11-29 05:23:10
Bob Horn

That's an interesting issue. One option is to use a different persistence mechanism that's intended for multiple consumers, like a database. Can you store your config data there?

OR... you could use the answer provided here:

Accessing App.config in a location different from the binary

Note that if you need to externalize and then centralize nodes like connectionStrings and appSettings, they accept a configSource to point to a separate file.

However, not all configuration elements supports this attribute.

<appSettings configSource="appSettings.config"/>
<connectionStrings configSource="connectionStrings.config"/>

In the .NET Framework version 2.0, you can now include configuration settings in a separate file for all configuration elements that support the configSource attribute. However, when you use the configSource attribute, you must move the entire section to the separate file because there is no merging of element settings. There is a one-time write to the Web.config file when using the configSource attribute. This causes the application to restart, but subsequent updates to the section are written directly to the separate file and do not cause subsequent application restarts. For more information, see ConfigSource.

Yes, I got the solution. Thanks to Bob Horn and JoeBilly for valuable inputs.

I have implemented the configuration as per my requirement. I have searched a lot for the complete solution but always getting the concepts and small piece of code, that's why i am providing the complete working code.

With the help of below mentioned code you can achieve the followings and play with the configuration as you want.

  1. Common Configuration [CommonDB] can be defined as a single repository and can be stored in external XML file. Class library will be getting always one value for web as well as windows application.
  2. Website specific configuration [WebDBConn] can be stored in web.config.
  3. Window Application specific configuration [WindowDBConn] can be mentioned in app.config.
  4. If you want to use same Key with Different values [INPUT_PATH] as per the application, then use same key and the diff values in wen.config and app.config. But remember that key should not be available in the common.config other wise the value which is available in the common.config will be picked up.
  5. The good thing is that you don't have to chage your code behind approach for getting these values.

Common.Config for Class Library/Common configuration

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="CommonDB" value="CommonDBValue" />    
</appSettings>

Web.Config for Website

<configuration>
    <appSettings file="D:\Common.config">
        <add key="WebDBConn" value="WebDBConnValue" />
        <add key="INPUT_PATH" value="INPUT_PATH_WEB" />
    </appSettings>
</configuration>

App.config for Windows Application

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="D:\Common.config">
        <add key="WindowDBConn" value="WindowDBConnValue" />
        <add key="INPUT_PATH" value="INPUT_PATH_WINDOW" />
    </appSettings>
</configuration>

Code behind

string configValue = ConfigurationSettings.AppSettings["CommonDB"];

Thanks...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!