Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET中的用户范围设置_Asp.net_.net_Wpf_Configuration - Fatal编程技术网

ASP.NET中的用户范围设置

ASP.NET中的用户范围设置,asp.net,.net,wpf,configuration,Asp.net,.net,Wpf,Configuration,我有一个用于windows(WPF)和web(ASP.NET)上下文的类库。如果在windows上下文中使用,库中的设置相当于用户范围,如果在web上下文中使用,则必须是应用程序范围。我想将它们声明为用户范围,并使用默认值作为“伪应用程序范围”。我的问题是,web应用程序通过抛出配置错误来禁止用户范围的设置 最好是在框架配置系统中处理此问题的最佳方法是什么?通过对其进行分类,您可以为ASP.NET环境创建一个兼容的提供程序 这可能使更改当前代码变得非常容易,因为您可以保留当前代码,但在ASP.N

我有一个用于windows(WPF)和web(ASP.NET)上下文的类库。如果在windows上下文中使用,库中的设置相当于用户范围,如果在web上下文中使用,则必须是应用程序范围。我想将它们声明为用户范围,并使用默认值作为“伪应用程序范围”。我的问题是,web应用程序通过抛出配置错误来禁止用户范围的设置

最好是在框架配置系统中处理此问题的最佳方法是什么?

通过对其进行分类,您可以为ASP.NET环境创建一个兼容的提供程序

这可能使更改当前代码变得非常容易,因为您可以保留当前代码,但在ASP.NET中必须添加其他提供程序


好的,面对不可避免的挑战。ASP.NET中没有用户范围的设置。在混合客户机/服务器环境中使用的类库不应该使用它们

以下是我最后提出的解决方案:

为了在服务器环境(ASP.NET)中使用,类库的所有设置都必须是应用程序范围的

我为客户机环境(WPF)中的使用引入了第二组设置。这些设置的属性名称和类型与类库的属性名称和类型相同,但它们的范围可能不同,并且它们位于我的主程序集中

通过一小段代码,我扩展了libraries设置类,以注入用户范围的设置

namespace ClassLibrary.Properties 
{
    using System.Configuration;

    public sealed partial class Settings {
        private ApplicationSettingsBase injectedSettings;

        public void InjectSettings(ApplicationSettingsBase settings)
        {
            injectedSettings = settings;
        }

        public override object  this[string propertyName]
        {
            get 
            { 
                if (injectedSettings != null)
                    return injectedSettings[propertyName];

                 return base[propertyName];
            }
            set 
            { 
                base[propertyName] = value;
            }
        }
    }
}
通过此扩展,我可以将第二个设置类插入到库设置中:

ClassLibrary.Properties.Default.InjectSettings(Application.Properties.Settings.Default);

不知道如何在不更改库的情况下执行此操作。我假定用户设置存储在Windows用户文件夹中,ASP.NET中没有这样的设置,原因很明显。@Stillgar:我可以更改库,但我不想通过引入我自己的一组配置类来“重新发明轮子”。您可能正在从类中抽象出设置的实际持久性,并提供特定于实现的持久性—因此您可以使用同一个类,但需要插入一个提供程序来分别处理windows设置和ASP.Net设置。