ユーティリティのサポート プロジェクトを共有する 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;