在WPF应用程序中使用ASP .NET PROFILE提供程序

时间:2011-08-01 20:12:45

标签: wpf profile-provider

我已经能够找到很多关于在WPF中使用ASP .NET成员资格提供程序的东西。我甚至在我的WPF应用程序中使用了ASP .NET角色提供程序。这些在WPF中非常容易使用。我找不到任何有关如何在WPF应用程序中使用ASP .NET PROFILE提供程序的信息。

我的应用程序将在位于移动车辆中的笔记本电脑上运行;它无法使用Web服务连接到服务器并对用户进行身份验证。我的代码需要能够从本地数据库中检索用户的配置文件信息。

我已经多次尝试构建一个派生自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(string username,bool isAuthenticated)返回null。我相信这是因为编译器无法将ProfileBase强制转换为UserProfile,即使UserProfile来自ProfileBase。如果我错了,请纠正我。

有人能指出我现有的文章或描述构建从ProfileBase扩展的用户个人资料类的正确方法吗?

1 个答案:

答案 0 :(得分:1)

我已经设法自己解决了这个问题。这是有效的:

  1. 从所有CLR属性中删除属性。这些不适用于默认的aspnet_Profiles表。
  2. 在app.Config中,您需要为标记添加“inherits”属性。必须将其设置为类的完全限定名称,并使用逗号与程序集文件名(无扩展名)分隔。
  3. 完成这些操作后,GetUserProfile方法和ProfileBase类的Create方法返回UserProfile对象。