2011-08-01 12 views
1

WP.NETでASP .NETメンバーシッププロバイダを使用する方法については、多くのことを見つけることができました。 WPFアプリケーションでASP .NETロールプロバイダが動作しています。これらはWPFで非常に使いやすいです。どのような情報も見つけられないのは、WPFアプリケーションでASP .NETプロファイルプロバイダを使用する方法です。WPFアプリケーションでASP .NETプロファイルプロバイダを使用する

私のアプリケーションは、移動中の車両に搭載されたノートパソコンで動作します。 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(文字列のユーザー名、ブール値にisAuthenticated)がnullを返します。これは、UserProfileがProfileBaseを継承していても、コンパイラがProfileBaseをUserProfileにキャストできないためです。私が間違っているなら、私を修正してください。

ProfileBaseから拡張されたユーザープロファイルクラスを作成するための既存の記事を指摘したり、適切な方法を記述することはできますか?

答えて

1

私はこの問題を自分で解決することができました。以下は動作する:

  1. すべてのCLRプロパティから属性を削除します。これらはデフォルトのaspnet_Profilesテーブルでは機能しません。
  2. app.Configでは、タグに「継承」属性を追加する必要があります。これは、アセンブリファイル名(拡張子なし)とコンマで区切って、クラスの完全修飾名に設定する必要があります。

これらの処理が完了したら、GetUserProfileメソッドとProfileBaseクラスのCreateメソッドがUserProfileオブジェクトを返します。

関連する問題