2012-03-26 2 views
2

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

어떤 생각 ?

업데이트 : 내가 응용 프로그램을 게시 할 때이 발생합니다,하지만 난 디버깅을 시작 사용할 때 모든

답변

0

오늘은 바로이 문제를 해결 괜찮습니다. 그는 응용 프로그램에 이름을 지정하지 않았기 때문에 다른 사용자를 만들고있었습니다.

프로필 기능을위한 이름의 앱을 올바르게 지정해야합니다. 이름이 없으므로 시스템에서 응용 프로그램의 이름을 자동으로 만들고 다른 ApplicationId를 만들 수 있습니다.

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> 
관련 문제