2012-05-10 5 views
1

Я следил за учебником онлайн, чтобы использовать встроенный профилировщик asp.net, но он не получает профиль. Он вернется нулевой каждый раз при запуске GetUserProfile:UserProfile не работает

Вот мой код для вызова:

 if (UserProfile.GetUserProfile() == null) 
     { 
      UserProfile.Create(Membership.GetUser().UserName); 
     } 
     UserProfile currentProfile = UserProfile.GetUserProfile(); 
     currentProfile.WorksAt = "WorksAt Test"; 
     currentProfile.Manages = "Manages Test"; 
     String WorksAt = currentProfile.WorksAt; 
     String Manages = currentProfile.Manages; 

Вот мой код профиля класса:

 using System.Web.Profile; 
     using System.Web.Security; 

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

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

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

      public static UserProfile GetUserProfile() 
      { 
       return Create(Membership.GetUser().UserName) as UserProfile; 
      } 
     } 
+0

Был ли y ou проверить, что Memberhip.GetUser(). UserName возвращает что-то ненулевое? Кроме того, вы все создаете как в GetUserProfile(), так и в коде, который вызывает GetUserProfile() ... поэтому, если Create failed, вы переходите к нему и снова вызываете его. –

+0

Да, я проверил, что Memberhip.GetUser(). UserName действительно возвращает мое имя пользователя. – Bill

ответ

1

Рисунок его из учебника онлайн, Мне нужно было добавить inherits = "UserProfile" при определении поставщика профиля в Web.config:

<profile defaultProvider="TestServerProfile" inherits="UserProfile"> 
     <providers> 
      <clear/> 
      <add name="TestServerProfile" type="System.Web.Profile.SqlProfileProvider" connectionStringName="TestServerConnection" applicationName="/"/> 
     </providers> 
    <properties> 
    <group name="UserInformation"> 
     <add name="WorksAt" type="String" serializeAs="String" defaultValue="" /> 
     <add name="Manages" type="String" serializeAs="String" defaultValue="" /> 
    </group> 
    </properties> 
    </profile>