注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

翱翔的板儿砖

——燃烧吧,小宇宙!

 
 
 

日志

 
 

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

2007-09-12 20:02:25|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在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

http://blog.csdn.net/mydriverc/archive/2007/08/08/1730898.aspx

  评论这张
 
阅读(916)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017