Пользовательский профиль дублирует информацию пользователя - PullRequest
2 голосов
/ 26 марта 2012

Я создал собственный класс Profile с использованием ProfileBase, но у меня возникли проблемы со вставкой информации. Я создал пользователя с помощью мастера регистрации 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 ]

1 голос
/ 16 октября 2012

Профиль и имя приложения участника должны быть одинаковыми в вашем файле 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>
0 голосов
/ 29 марта 2012

Сегодня я просто решаю проблему.Он создавал другого пользователя, потому что он не назначал имя приложению.

Абсолютно необходимо правильно назначить приложение имени для функции профиля.Поскольку имя отсутствует, система автоматически создает имя из приложения, и существует причина для создания другого идентификатора приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...