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

时间:2012-03-25 21:53:52

标签: asp.net .net configuration settings.settings

我尝试使用设置文件在用户登录应用程序时存储用户首选项。

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

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

什么是好的解决方案?

3 个答案:

答案 0 :(得分:14)

当我遇到这个问题时,事实证明我有一个带有Settings.settings(或Settings.Designer.cs)文件的dll的引用。

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

enter image description here

答案 1 :(得分:11)

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

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

  • 持久性cookies
  • ASP.NET成员资料
  • 你自己的Db

答案 2 :(得分:3)

只需在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,您的setter将被覆盖。

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