检查web.config中是否存在设置

本文关键字:存在 设置 是否 web config 检查 | 更新日期: 2023-09-27 18:08:46

如何检查web中是否存在设置?配置文件?

我发现下面的代码,但我认为它是针对一个app.config文件?而我的设置是在web.config。下面的代码没有返回任何键,即使有6个。

 if (ConfigurationManager.AppSettings.AllKeys.Contains(settingName))
 {
     return 1;
 }
 else
 {
      return 0;
 }
web.config: 中的示例设置
<configuration>
  . . .
  <applicationSettings>
    <ProjectNameSpace.Properties.Settings>
    <setting name="mySetting" serializeAs="String">
       <value>True</value>
     </setting>
   </ProjectNameSpace.Properties.Settings>
  </applicationSettings>
</configuration>

最初我试图读出它,并检查它是否错误或存在。

 var property = Properties.Settings.Default.Properties[settingName];

但是这行代码似乎是从web加载的。配置,如果不存在,则从项目设置中获取。所以我不知道它是否在网络上。通过检查值是否为空白来配置或不配置,因为它被设置为其他东西!

检查web.config中是否存在设置

也许你可以试试:

if (ConfigurationManager.AppSettings[name] != null)
{
    //The value exists
}

如何设置设计时间值为空值?

if(string.IsNullOrEmpty(Properties.Settings.Default.mySetting))
{
  // not set in web.config 
}
else
{
 // set in web.config and use it
}

注意,如果你在web中设置了一个值。配置后,当您打开项目的设置文件时,它会尝试同步值以匹配web。配置价值。

以下内容适合我。经过反复试验。

以上面的答案为基础,将属性中的参数设置为空白。不要让它们从配置中自动更新。

然后使用类似于下面的代码检查值是否为空。它还允许布尔值等被默认设置为一个值,因为它们不能为空。

您可以相应地调整它以检查特定的设置,因为设置名称在foreach中可用。或者使用["settingname"]

它适用于布尔和字符串设置。可能更多。它检查是否没有使用默认值(因为没有找到值),如果没有,则检查包含的值。

    public int CheckSettings()
    {
        int settings = 0;
        SettingsPropertyValueCollection settingsval = Properties.Settings.Default.PropertyValues;
        foreach (SettingsPropertyValue val in settingsval)
        {
            settings += val.UsingDefaultValue || String.IsNullOrWhiteSpace((string)val.SerializedValue) ? 0 : 1;
        }
        return settings;
    }

对于WPF桌面应用程序,我会这样做:

if (Settings.Default.Properties[column.ColumnName] != null)
{
   //code                
}