0

ユーティリティのサポート プロジェクトを共有する Web アプリケーションと WPF アプリケーションがあります。

カスタム メンバーシップ ユーザー プロファイルを WPF プロジェクトで動作させようとすると、エラーが発生し、何を探すべきかわかりません。

WPF プロジェクトからサポート プロジェクトの GetUser メソッドを呼び出すと、エラーが発生します。エラーは -

アセンブリ 'System.Web、バージョン = 4.0.0.0、カルチャ = ニュートラル、PublicKeyToken = b03f5f7f11d50a3a' からタイプ 'APP.Support.UserProfile' を読み込めませんでした。

ユーザー プロファイル コードは -

namespace APP.Support
{
public class UserProfile : ProfileBase
{
    static public UserProfile CurrentUser
    {
        get
        {
            return (UserProfile)
                    (ProfileBase.Create(Membership.GetUser().UserName));
        }
    }

    public static UserProfile GetUser(string username)
    {
        return (UserProfile)
                    (ProfileBase.Create(username));
    }

    public string UserCode
    {
        get { return ((string)(base["UserCode"])); }
        set { base["UserCode"] = value; Save(); }
    }

    public string Name
    {
        get { return ((string)(base["Name"])); }
        set { base["Name"] = value; Save(); }
    }

    public string UserID
    {
        get { return ((string)(base["UserID"])); }
        set { base["UserID"] = value; Save(); }
    }
}

}

(動作する)Web設定は -

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="30">
  <providers>
    <clear/>
    <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="6" connectionStringName="MembershipConnectionString" applicationName="APP" enablePasswordRetrieval="false" maxInvalidPasswordAttempts="2147483647" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Hashed"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <clear/>
    <add connectionStringName="MembershipConnectionString" applicationName="APP" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/>
  </providers>
</roleManager>
<profile defaultProvider="SqlProvider" inherits="APP.Support.UserProfile">
  <providers>
    <clear/>
    <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MembershipConnectionString" applicationName="APP"/>
  </providers>
</profile>

これを呼び出すことができない WPF プロジェクトのアプリ構成は -

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="30">
  <providers>
    <clear/>
    <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" minRequiredNonalphanumericCharacters="0" minRequiredPasswordLength="6" connectionStringName="MembershipConnectionString" applicationName="APP" enablePasswordRetrieval="false" maxInvalidPasswordAttempts="2147483647" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Hashed"/>
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <clear/>
    <add connectionStringName="MembershipConnectionString" applicationName="APP" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/>
  </providers>
</roleManager>
<profile defaultProvider="SqlProvider" inherits="APP.Support.UserProfile">
  <providers>
    <clear/>
    <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MembershipConnectionString" applicationName="APP"/>
  </providers>
</profile>  

呼び出しコードは -

Application.Current.Properties["UserName"] = username;

UserProfile profile = UserProfile.GetUser(username);

Application.Current.Properties["LoggedInUser"] = profile.Name;
4

1 に答える 1

0

他の誰かがこの状況にある場合、それは可能ではないようです。

ユーザー プロファイル情報を取得するために、サポート プロジェクトでいくつかの SQL メソッドを作成することになりました。

メンバーシップ データベースのプロファイル情報はかなり奇妙な方法で保存されますが、抽出可能です。

プロパティ名 - UserCode:S:0:2:Name:S:2:9:UserID:S:11:8:

プロパティ値 - XXTEST USER00000001

于 2013-09-19T13:54:55.500 に答える