C#ASP MVC从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

我正试图从web配置文件中提取数据,如下所述

这是我的密码:

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找到了更好的方法。看看我的答案。投票支持你的解决方案,因为它也会起作用。谢谢你的帮助:)好的,我想出了一个更好的方法。看看我的答案。投票支持你的解决方案,因为它也会起作用。谢谢你的帮助:)