当前的配置系统不支持用户范围的设置

Posted

技术标签:

【中文标题】当前的配置系统不支持用户范围的设置【英文标题】:The current configuration system does not support user-scoped settings 【发布时间】:2012-04-09 12:03:41 【问题描述】:

当他/她登录应用程序时,我正在尝试使用设置文件来存储用户首选项。

我将它们定义为用户(范围),但我得到了

System.Configuration.ConfigurationErrorsException: The current configuration system does not support user-scoped settings.

什么是好的解决方案?

【问题讨论】:

【参考方案1】:

Web 应用程序确实不支持用户范围的设置。而且它们不起作用,用户设置必须保存在服务器上的Users\<username>\... 文件夹下。

您可以选择多种网络技术:

持久性 cookie ASP.NET 成员资格配置文件 你自己的数据库

【讨论】:

【参考方案2】:

您可以通过简单地向Settings.Designer.cs 中的属性定义添加一个setter 来使应用程序范围设置可写。例如:

[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("AdminContext")]
public string DbContext

    get  return ((string)(this["DbContext"])); 
    set  this["DbContext"] = value;  

需要注意的是,Settings.Designer.cs 是自动生成的,因此如果您使用设计器 UI,您的设置器将被覆盖。

这适用于控制台和 Web 应用程序。

【讨论】:

虽然这不是最佳实践,但它确实有效并且经过了全面测试。鉴于我在正文中警告了这种方法,我认为投反对票是无效的。此解决方案“使用风险自负”,但它一个解决方案。 Settings.Designer.cs 是自动生成的。不是很好的解决方案。【参考方案3】:

当我遇到这个问题时,我发现我引用了一个包含 Settings.settings(或 Settings.Designer.cs)文件的 dll。

发生的情况是,在编辑 Setting.settings 文件时,单击底部的空白行时,会添加一个新行,其中包含模板信息和默认用户设置,而不是应用程序设置。这是一个不错的功能,但是您可以看到在更改模板并添加新设置之后如何单击下方失去焦点添加了新模板行,如果您不注意,您会意外添加用户设置。检查您是否在引用的 dll 中有此文件并删除任何用户设置。

【讨论】:

以上是关于当前的配置系统不支持用户范围的设置的主要内容,如果未能解决你的问题,请参考以下文章

office365不支持foxmail

不需要任何插件支持运行网页定时任务实现方法

Vim入门级配置介绍

Visual Studio 2015 诊断工具不支持当前调试配置

我用的Oracle VM VirtualBox进入虚拟界面后说【当前虚拟电脑中的系统不支持鼠标自动切换需要通过host key手

AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制