我正在尝试在课堂上提取一些键/值。这是一个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吗?
答案 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"