C#ASP MVC从web配置文件中提取数据不起作用
我正试图从web配置文件中提取数据,如下所述 这是我的密码:C#ASP MVC从web配置文件中提取数据不起作用,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正试图从web配置文件中提取数据,如下所述 这是我的密码: System.Configuration.Configuration activeCampaignApiSetting1 = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null); if (activeCampaignApiSetting1.AppSettings.Settings.Count > 0) { System
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中的appSetting,您可以通过
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"];
.
仅供参考:它们返回字符串值(不是键值对)。如果它们是web.config中的appSetting,您可以通过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"];
.
仅供参考:它们返回字符串值(不是键值对)。好的,所以我有一个更好的解决方案
由于我与nopCommerce合作,我需要使用:
private readonly ISettingService _settingService = EngineContext.Current.Resolve<ISettingService>();
string apikey = _settingService.GetSettingByKey<string>("apikey_removed");
string apiurl = _settingService.GetSettingByKey<string>("apiurl_removed");
private readonly ISettingService\u settingService=EngineContext.Current.Resolve();
字符串apikey=_settingService.GetSettingByKey(“apikey_已删除”);
字符串APIRL=\u settingService.GetSettingByKey(“APIRL\u已删除”);
如本文所述
然后在管理后端的配置>设置>所有设置下,我将密钥添加到那里
这是一个更好的解决方案,因为如果需要更改api密钥或url,可以通过nopcommerce管理面板进行更改。而不是将解决方案重建/发布到web服务器
希望这对某人有所帮助:)好的,我有一个更好的解决方案
由于我与nopCommerce合作,我需要使用:
private readonly ISettingService _settingService = EngineContext.Current.Resolve<ISettingService>();
string apikey = _settingService.GetSettingByKey<string>("apikey_removed");
string apiurl = _settingService.GetSettingByKey<string>("apiurl_removed");
private readonly ISettingService\u settingService=EngineContext.Current.Resolve();
字符串apikey=_settingService.GetSettingByKey(“apikey_已删除”);
字符串APIRL=\u settingService.GetSettingByKey(“APIRL\u已删除”);
如本文所述
然后在管理后端的配置>设置>所有设置下,我将密钥添加到那里
这是一个更好的解决方案,因为如果需要更改api密钥或url,可以通过nopcommerce管理面板进行更改。而不是将解决方案重建/发布到web服务器
希望这对某人有所帮助:)尝试使用AppSettings[“ActiveCampaignApiUrl”]。省略对.Settings的调用。@Vlad HI,我得到一条红色的曲线,其中有一个错误:配置元素由于其保护级别而不可访问。感谢您的帮助:)老实说,我从未使用过MSDN文章中的API。这是我多年来一直在使用的:System.Configuration.ConfigurationManager.AppSettings[“您的密钥”]。你能试试吗?找到了@Vlad看我的答案试着使用AppSettings[“activecampaimpaiurl”]。省略对.Settings的调用。@Vlad HI,我得到一条红色的曲线,其中有一个错误:配置元素由于其保护级别而不可访问。感谢您的帮助:)老实说,我从未使用过MSDN文章中的API。这是我多年来一直在使用的:System.Configuration.ConfigurationManager.AppSettings[“您的密钥”]。你能试试吗?找到了@Vlad看我的答案OK找到了更好的方法。看看我的答案。投票支持你的解决方案,因为它也会起作用。谢谢你的帮助:)好的,我想出了一个更好的方法。看看我的答案。投票支持你的解决方案,因为它也会起作用。谢谢你的帮助:)