Пользовательские настройки в ASP.NET - PullRequest
1 голос
/ 09 января 2012

У меня есть библиотека классов, используемая в контексте Windows (WPF) и веб (ASP.NET). В библиотеке есть параметры, которые являются скорее пользовательскими, если они используются в контексте Windows, и которые должны быть применены в приложениях, если они используются в веб-контексте. Я хотел бы объявить их как пользовательские и использовать значения по умолчанию как «псевдо-прикладные». Моя проблема в том, что веб-приложения запрещают настройки в пользовательской области, выдавая ошибку конфигурации.

Каков наилучший способ справиться с этим, предпочтительно в рамках системы конфигурации фреймворков?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Хорошо, лицом к лицу с неизбежным.В ASP.NET нет пользовательских настроек.Библиотеки классов, используемые в смешанных клиент-серверных средах, не должны их использовать!

Вот решение, на котором я закончил:

Для использования в серверной среде (ASP.NET) всех настроекбиблиотеки классов должны быть в области приложения.

Я ввел второй набор настроек для использования в клиентских средах (WPF).Эти параметры имеют имена и типы свойств, идентичные именам и типам свойств библиотек классов, но они могут различаться по объему, и они находятся в моей основной сборке.

Небольшой фрагмент кода расширяет класс настройки библиотекдля ввода пользовательских настроек.

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);
1 голос
/ 09 января 2012

Посмотрите на класс SettingsProvider , подклассифицировав его, вы можете создать совместимого поставщика для среды ASP.NET.

Это может сделать изменение текущего кода довольно простым, потому что вы можете сохранить текущий код, но вам придется добавить другого провайдера в ASP.NET.

Это также дает хороший обзор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...