您的位置:首页 > 编程语言 > C#

C# 获得配置文件存储目录

2007-08-08 00:57 225 查看
在C#中,不同工程为了读取自己的配置文件,由于系统当前目录的问题,往往在不同情况下,使用不同的方法。下面对在什么时候,使用什么方法,做一个整理,一下方法很多是引用别人信息:
情况1:
如果是一个标准的Win独立应用,或者一个标准的WEB独立应用,就不用说了,大家都知道。
配置文件定义配置信息
用下面代码,简单读取配置信息。
using System.Configuration;
string ww = ConfigurationSettings.AppSettings["SQLConnString"];
// 或者其他 ConfigurationSettings 类的方法获得配置信息

情况2:

如果是一个需要被Win程序调用的DLL组件,
配置信息放在调用它的Win程序的配置文件(app.config)中,
调用代码仍然是情况1简单的那两行调用代码。

情况3:

如果是一个需要被WEB程序调用的DLL组件,
配置信息放在调用它的WEB程序的配置文件(web.config)中,
调用代码仍然是情况1简单的那两行调用代码。

情况4:

如果你编写的是一个独立的Win的服务,
跟情况1完全一样,
把配置信息文件放到Win服务项目中。
Win服务中再用情况1上面的代码直接调用即可。

情况5:

如果是一个组件,被Win服务所调用,
跟情况2、3完全一样,
把配置信息文件放到Win服务项目中。
组件中,再用情况1上面的代码直接调用即可。

情况6:

如果你编写的是一个独立的Com+企业应用。并且这个Com+应用激活模式是“库应用程序”,组件将在创建者进程中被激活。
跟情况 2、3、5 类似,这时候的Com+就可以认为是一个组件。
把配置信息文件放到调用这个Com+的项目中。
这个COM+中,用情况1上面的代码直接调用即可。

分析以上几种情况:
起作用的配置文件其实是当前应用程序域的配置文件,.net 组件的作用域是调用它的Win程序或者WEB程序或者Win服务等等。组件的配置信息也应该是在这些主程序的配置文件中配置。
你可以在代码中通过AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
这个代码,获得当前起作用的配置文件。

情况7:

如果你编写的是一个独立的Com+企业应用。并且这个Com+应用激活模式是“服务器应用程序”,组件将在专用服务器进程中被激活。
即这样的配置 [assembly: ApplicationActivation(ActivationOption.Server) ]
这时候,麻烦来了,
我们用 AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 获得的是当前有效配置文件是
C:/WINDOWS/system32/dllhost.exe.config
这个文件默认并不存在,我们自己手工创建这个文件,并把配置信息写到这个文件中。
Debug 程序,我们仍看会看到“未将对象引用设置到对象的实例。”这样的异常产生。
以上我们得出的结论并不适用这个情况。

解决方法:

参看:
http://dotnet.org.za/armand/archive/2004/05/30/1917.aspx
http://blogs.msdn.com/florinlazar/archive/2003/12/04/41369.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐