Использование провайдера ASP .NET PROFILE в приложении WPF - PullRequest
1 голос
/ 02 августа 2011

Мне удалось найти много материала об использовании поставщика членства ASP .NET в WPF.У меня даже есть поставщик ASP .NET Role, работающий в моем приложении WPF.Они очень просты в использовании в WPF.Я не могу найти никакой информации о том, как использовать поставщика ASP .NET PROFILE в приложении WPF.

Мое приложение будет работать на ноутбуке, находящемся в движущемся транспортном средстве;он не может использовать веб-службы для подключения к серверу и аутентификации пользователя.Мой код должен иметь возможность извлекать информацию о профиле пользователя из локальной базы данных.

Я несколько раз пытался создать класс, производный от ProfileBase, но ничего из того, что я пробовал, не сработало.Чтобы уточнить, приведенный ниже код является выдержкой из моей последней неудачной попытки:

public class UserProfile : ProfileBase {

    [CustomProviderData( "AlarmsToDisplay;int" )]
    public int AlarmsToDisplay {
        get { return (int) GetPropertyValue( "AlarmsToDisplay" ); }
        set { SetPropertyValue( "AlarmsToDisplay", value ); }
    }

    // Other properties following the same pattern follow.

    private UserProfile() { }

    public static UserProfile GetUserProfile( string username ) {
        return Create( username ) as UserProfile;
    }

    public static UserProfile GetUserProfile( string username, bool isAuthenticated ) {
        return Create( username, isAuthenticated ) as UserProfile;
    }
}

В этом коде метод GetUserProfile (строка username, bool isAuthenticated) возвращает ноль.Я полагаю, что это потому, что компилятор не может преобразовать ProfileBase в UserProfile, даже если UserProfile происходит от ProfileBase.Пожалуйста, исправьте меня, если я ошибаюсь.

Может кто-нибудь указать мне на существующую статью или описать правильный способ создания класса профиля пользователя, который расширяется от ProfileBase?

1 Ответ

1 голос
/ 10 ноября 2011

Мне удалось решить эту проблему самостоятельно. Вот что работает:

  1. Удалить атрибуты из всех свойств CLR. Они не работают с таблицей aspnet_Profiles по умолчанию.
  2. В app.Config вам нужно добавить атрибут «наследует» к тегу. Это должно быть установлено на полное имя вашего класса, отделенное от имени файла сборки (без расширения) запятой.

Как только эти вещи будут выполнены, метод GetUserProfile и методы Create класса BaseBase возвращают объекты UserProfile.

...