2013-08-16 8 views
1

Мне нужно указать все профили конкретного пользователя, но я не могу найти, как это сделать.Список членов всех профилей пользователей

public abstract ProfileInfoCollection FindProfilesByUserName(
    ProfileAuthenticationOption authenticationOption, 
    string usernameToMatch 
) 

Возвращает мне огромное количество нежелательных вещей здесь например:

"UserName": "Alex", 
"IsAnonymous": false, 
"IsDirty": false, 
"LastActivityDate": "2013-08-16T00:44:30.98+03:00", 
"LastUpdatedDate": "2013-08-16T00:25:15.663+03:00", 
"Properties": [ 
    { 
     "Name": "Name.First", 
     "IsReadOnly": false, 
     "DefaultValue": "", 
     "PropertyType": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", 
     "SerializeAs": 0, 
     "Provider": { 
      "ApplicationName": "/", 
       "Name": "AspNetSqlProfileProvider", 
       "Description": "SQL profile provider." 
      }, 
      "Attributes": { 
       "AllowAnonymous": false 
      }, 
      "ThrowOnErrorDeserializing": false, 
       "ThrowOnErrorSerializing": true 
      } 
] 

Есть ли способ, чтобы перечислить только использованную/перечислены в профилях web.config?

Обновление: Я также попытался написать мое одно расширение провайдера, но я не могу найти, где ProfileBase сохраняет профили/группы профилей.

Спасибо!

ответ

1

После долгого времени поиска я нашел только один способ решить проблему.

Я написал простую функцию, например:

public Dictionary<string, ProfileGroupBase> GetGroupProfiles(MembershipUser user, string[] groups) 
{ 
    return groups.ToDictionary(group => group, GetUserProfile(user).GetProfileGroup); 
} 
public Dictionary<string, object> GetProfile(MembershipUser user, string[] properties) 
{ 
     return properties.ToDictionary(prop => prop, prop => UserProfile(user).GetPropertyValue(prop)); 
} 

И использование:

x.GetGroupProfiles(Membership.GetUser("Rafael"), new[] { "Name" }) 
Смежные вопросы