簡體   English   中英

WPF成員資格提供程序自定義用戶配置文件

[英]WPF Membership Provider Custom User Profile

我有一個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(); }
    }
}

}

網絡配置(有效)是-

<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;

如果其他任何人都處於這種情況下,這似乎是不可能的。

我最終在支持項目中編寫了一些SQL方法來檢索用戶配置文件信息。

會員數據庫中的個人資料信息以一種非常奇怪的方式存儲,但可以提取-

PropertyNames-UserCode:S:0:2:Name:S:2:9:UserID:S:11:8:

PropertyValues-XXTEST USER00000001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM