我正在尝试从 Web 配置文件中提取数据,如此 msdn 资源所述。
这是我的代码:
System.Configuration.Configuration activeCampaignApiSetting1 =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (activeCampaignApiSetting1.AppSettings.Settings.Count > 0) {
System.Configuration.KeyValueConfigurationElement activeCampaignApiKeySetting =
activeCampaignApiSetting1.AppSettings.Settings["ActiveCampaignApiKey"];
if (activeCampaignApiKeySetting != null) {
activeCampaignApiKey = activeCampaignApiKeySetting.Value;
}
System.Configuration.KeyValueConfigurationElement activeCamapignApiUrlSetting =
activeCampaignApiSetting1.AppSettings.Settings["ActiveCampaignApiUrl"];
if (activeCamapignApiUrlSetting != null) {
activeCampaignApiUrl = activeCamapignApiUrlSetting.Value;
}
}
当我尝试实例化这个类时:
var acs = new Acs(activeCampaignApiKey, activeCampaignApiUrl);
它抛出一个异常,告诉我值为空。
Web 配置文件中的值在那里:
<add key="ActiveCampaignApiKey" value="apikey_removed" />
<add key="ActiveCampaignApiUrl" value="apiurl_removed" />
有人知道我可能哪里出错了吗? 干杯
如果它们是 web.config 中的 appSetup,您可以通过ConfigurationManager.AppSettings
访问它们。
<?xml version="1.0"?>
<configuration>
<configSections>
<appSettings>
<add key="ActiveCampaignApiKey" value="apikey_removed" />
<add key="ActiveCampaignApiUrl" value="apiurl_removed" />
</appSettings>
</configSections>
</configuration>
string activeCampaignApiKeySetting
= ConfigurationManager.AppSettings["ActiveCampaignApiKey"];
string activeCamapignApiUrlSetting
= ConfigurationManager.AppSettings["ActiveCampaignApiUrl"];
请确保引用System.Configuration
,并包含using System.Configuration;
指令。
仅供参考:它们返回字符串值(不是键值对(。
好的,所以我有一个更好的解决方案,
当我与nopCommerce合作时,我需要使用:
private readonly ISettingService _settingService = EngineContext.Current.Resolve<ISettingService>();
string apikey = _settingService.GetSettingByKey<string>("apikey_removed");
string apiurl = _settingService.GetSettingByKey<string>("apiurl_removed");
如本论坛帖子中所述
然后在管理后端的配置>设置下>所有设置下,我在那里添加密钥。
这是一个更好的解决方案,因为如果需要更改 api 密钥或 url,可以通过 nopcommerce 管理面板完成。 而不是将解决方案重新生成/发布到 Web 服务器。
希望这对某人有所帮助:)