none
如何指定.NET程序运行时需要读取的配置文件路径? RRS feed

  • 问题

  • 问题的简要概括。我有一个解决方案,能够正常运行,但是如果我把app.config重命名之后,程序在运行的时候提示我找不到配置文件,请问如何指定程序运行时读取的配置文件路径?

     

    我最近在写一个WCF的解决方案,服务端对数据的处理使用ADO .NET Entity Framework。WCF和EF都需要配置文件,而且默认的名字都是app.config,

    在程序中,无需我们处理配置文件(比如读XML文件,然后获取节点信息),在WCF的Host端和EF里面只需如下的两段代码,.NET能自动获取app.config的内容:

     // WCF工程
     using (var host=new ServiceHost(typeof(Server.Settings.Configration))) {
     host.Open();
     Console.WriteLine("WCF服务已经启动,按任意键终止……");
     Console.Read();
     } 
    
     // EF工程
     using (var context=new SettingsEntities()) {
     }
    

    但是!

    如果把app.config重命名为other.config(或其它名字,但内容不变),程序将无法正常运行,它会告诉你找不到配置文件。

     

    请问如何使用任意名称的配置文件,同时代码简洁,最好不要直接操作XML文件。

    我知道.NET中有个类叫 System.Configuration.ConfigurationManager,但不知道如何用在WCF或EF的配置读取中。而且ConfigurationManager也只是方便的读取XML而已。我希望ServiceHost或ObjectContext有这样一个属性:

    string filePath = "otherName.config";

    ****.ConfigurationFilePath = filePath;

    当然,如果能指定程序运行时要读取的配置文件,更好。

     

    相关问题的链接:

    http://topic.csdn.net/u/20101015/14/9953bc6b-0ca2-4c40-b65f-cfd81dc484fd.html?seed=237867673&r=69079270#r_69079270

    http://social.msdn.microsoft.com/Forums/zh-CN/wcfzhchs/thread/2a616bc9-0c8d-4545-a6ef-7b400f71a4a0

    http://social.msdn.microsoft.com/Forums/zh-CN/adonetzhchs/thread/a38e9395-9356-46b4-9860-ec2f079ae514



    Debug my heart...
    2010年10月15日 6:04

答案

  • 实际上,app.config是一个默认的xml配置文件,微软把这个功能已经封装在里边了。如果你改名,那么微软默认找不到app的配置文件自然无法使用。此时我恐怕你只能使用XmlDocument类或者是LINQ-TO-XML读取配置文件内容进行加载。这是它的本质。
    • 已标记为答案 Lyu KingT 2010年10月18日 9:21
    2010年10月18日 3:18
    版主
  • 我将WCF和EF的配置放在app.config里面,突然解决了问题。

    我将WCF的Host段和Server处理部分放置相同的app.config,包括WCF和EF配置内容。

    EF模型类只有连接字符串,WCF客户段只有客户端配置。

     

    谢谢,如有疑问再来询问。


    Debug my heart...
    • 已标记为答案 Lyu KingT 2010年10月18日 9:21
    2010年10月18日 9:18

全部回复

  • 实际上,app.config是一个默认的xml配置文件,微软把这个功能已经封装在里边了。如果你改名,那么微软默认找不到app的配置文件自然无法使用。此时我恐怕你只能使用XmlDocument类或者是LINQ-TO-XML读取配置文件内容进行加载。这是它的本质。
    • 已标记为答案 Lyu KingT 2010年10月18日 9:21
    2010年10月18日 3:18
    版主
  • 我将WCF和EF的配置放在app.config里面,突然解决了问题。

    我将WCF的Host段和Server处理部分放置相同的app.config,包括WCF和EF配置内容。

    EF模型类只有连接字符串,WCF客户段只有客户端配置。

     

    谢谢,如有疑问再来询问。


    Debug my heart...
    • 已标记为答案 Lyu KingT 2010年10月18日 9:21
    2010年10月18日 9:18