C#项目和配置文件

时间:2012-01-16 06:11:30

标签: c#

我正在尝试在课堂上提取一些键/值。这是一个C#类库项目(不是Web项目),所以它有一个App.Config。

在我的C#项目(类库)中,得到以下内容:

1)从配置文件中提取键/值的实用程序方法:

public class ConfigUtil
{
    /// <summary>
    ///  Utility method to retrieve configuration setting values.
    /// </summary>
    /// <param name="configKey">Configuration Settings key to retrieve.</param>
    /// <returns>empty string if key is null</returns>
    public static string GetAppConfigSetting(string configKey)
    {
        return ConfigurationManager.AppSettings[configKey] ?? string.Empty;
    }
}

这个实用程序方法用于Web项目中,我只是将这个好帮手复制并粘贴到我的C#项目中,因为我需要这些auth和端点,以便在我的C#项目的某些代码中为第三方API进行authing。

2)用于保存查找的Config.cs

class Config
{
    public static string SomeThirdPartyApiEndpoint
    {
        get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiEndpoint"); }
    }

    public static string SomeThirdPartyApiAuthUsername
    {
        get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthUsername"); }
    }

    public static string SomeThirdPartyApiAuthPassword
    {
        get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthPassword"); }
    }
}

3)在我的App.Config中,键/值:

  <appSettings>
    <add key="SomeThirdPartyApiEndPoint" value="http://someEndPointUrl.com/XMLAPI" />
    <add key="SomeThirdPartyApiAuthUsername" value="someUserNameHere" />
    <add key="SomeThirdPartyApiAuthPassword" value="5233s54" />
  </appSettings>

4)此项目中我的某个类中的一些示例代码试图提取其中一个关键值:

string password = Config.SomeThirdPartyApiAuthUsername;

这一行是我的一种方法。

问题:它找不到我的任何键/值。当我调试时,我得到一个空字符串的密码。

我认为我正在这样做,因为我没有web.config因为这不是Web项目,所以这些键/值需要放在我的App.Config中。这是我创建的包装项目,用于包装对第三方API的调用。

另一个相关的问题:那么如果Web.config不存在,那么ConfigurationManager.AppSettings会查找App.Config吗?我想知道这个ConfigurationManager如何拉动......它只查找web.configs或者直接项目中可用的任何.config吗?

3 个答案:

答案 0 :(得分:1)

我相信ConfigurationManager.AppSettings会在正在运行的程序的配置文件中查找。如果这是一个库项目,则需要将所需的设置添加到主机的配置文件中。

答案 1 :(得分:1)

对于除silverlight之外的任何类型的.Net应用程序,在C#中使用ConfigurationManager.AppSettings["key"]来检索配置值,而在Silverlight中,我们必须在xmlreader的帮助下读取配置条目。有关更多信息,请参阅ConfigurationManager.AppSettings["KEYNAME"] is Null

答案 2 :(得分:0)

SomeThirdPartyApiUsername应为SomeThirdPartyApiAuthUsername


public static string SomeThirdPartyApiAuthUsername 
{ 
    get { return ConfigUtil.GetAppConfigSetting("SomeThirdPartyApiAuthUsername"); } 
} 

但你的钥匙是

"SomeThirdPartyApiUsername"