【发布时间】:2012-01-16 06:11:30
【问题描述】:
我正在尝试在我的班级中提取一些键/值。这是一个 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# 项目中,因为我需要这些身份验证和端点,以便在我的 C# 项目的某些代码中向第三方 API 进行身份验证。
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?
【问题讨论】:
-
相关问题令人困惑......这是一个Web项目还是一个Windows项目? ...ASP.NET 项目从 web.config 获取它们的设置...
-
只是一个 C# 项目...普通类库项目
-
好的,那么我猜测根据它所部署的环境,它将使用可用的配置文件。您应该对其进行测试,因为创建示例项目不需要很长时间。另外,请查看我的解决方案:)
-
已更新以修复 SomeThirdPartyApiAuthUsername...现在是一致的
-
是的,事实上这就是我想要做的就是测试它。所以我创建了一个测试项目(另一个 C# 类库项目)。然后在我的测试项目中引用了这个项目。开始运行一些测试..它命中了您在我的主项目中看到的上面那行代码......它在它试图寻找的任何 .config 中都找不到这些字符串。所以也许我需要在我的测试项目中添加一个配置文件......比如 App.config 或其他东西并将字符串移动到那里?抱歉,我对测试有点陌生。
标签: c#