自定义配置文件复制用户信息

时间:2012-03-26 15:36:37

标签: c# asp.net webforms

我使用ProfileBase创建了一个自定义Profile类,但是我在插入信息时遇到了问题。我使用asp的注册向导创建了一个用户,在我的CreateUserWizard1_CreatedUser方法中,我编写了代码,用于在Profile中添加信息。

ProfileUser pc = ProfileUser.GetUserProfile(UserName);
pc.FirstName = name.Text;
pc.LastName = lastname.Text;
pc.Save();

我的ProfileUser自定义类是:

namespace CancerApp
{

        public class ProfileUser : ProfileBase
        {
            [SettingsAllowAnonymous(false)]
            public string FirstName
            {
                get { return base["FirstName"] as string; }
                set { base["FirstName"] = value; }
            }

            [SettingsAllowAnonymous(false)]
            public string LastName
            {
                get { return base["LastName"] as string; }
                set { base["LastName"] = value; }
            }

            public static ProfileUser GetUserProfile(string username)
            {
                return Create(username) as ProfileUser;
            }

            public static ProfileUser GetUserProfile()
            {
                return Create(Membership.GetUser().UserName) as ProfileUser;
            }
        }

}

我的Web.config:

   <profile inherits="CancerApp.ProfileUser">
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" />
      </providers>
    </profile>

有什么问题? 当pc.Save()运行时,在aspnet_Users表中使用不同的ApplicationID和UserId创建重复信息。

enter image description here

任何想法?

  

更新: 这只发生在我发布应用程序时,但是当我使用启动调试时,一切都好了

2 个答案:

答案 0 :(得分:1)

配置文件和成员资格应用程序名称在web.config文件中应该相同:

  <profile defaultProvider="SqlProvider" inherits="YourNamespace.AccountProfile">
  <providers>
    <clear />
    <add name="SqlProvider"
         type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="memConnStr"
         **applicationName="MyApplication"/>**
  </providers>
</profile> 
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">     
  <providers>
    <clear />
    <add
      name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="memConnStr"
      **applicationName="MyApplication"**
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      requiresUniqueEmail="true"
      minRequiredNonalphanumericCharacters="0"
      passwordFormat="Hashed" />        
  </providers>
</membership>

答案 1 :(得分:0)

今天我就解决了这个问题。它创建了另一个用户,因为他没有为应用程序指定名称。

绝对有必要为配置文件功能正确分配名称的应用程序。由于没有名称,系统会自动从应用程序创建名称,并且有创建另一个ApplicationId的原因。