2011-02-01 3 views
0

У меня есть служба WCF с использованием учетных данных с именем пользователя. Теперь System.Web.Security.Membership.GetUser всегда возвращает null, но он может извлекать список пользователей в aspnetdb (System.Web.Security.Membership.GetAllUsers())Поставщик членства WCF

Однако на стороне обслуживания " ServiceSecurityContext.Current.PrimaryIdentity.Name "всегда возвращает правильное аутентифицированное имя пользователя.

Кто-нибудь знает, почему GetUser() всегда возвращает null?

это след от SQL Profiler

Exec dbo.aspnet_Membership_GetUserByName @ Имя_приложения = N'myApplication '@ UserName = N '', @ UpdateLastActivity = 1, @ CurrentTimeUtc =' 2011-02-01 23: 14: 56.2830000 '

Обратите внимание, что указанное выше имя пользователя пуст.

+0

Вы уверены, пользователь вошел в систему ... –

+0

да .. пользователь был аутентифицирован .. если не «ServiceSecurityContext.Current.PrimaryIdentity.Name» не вернет правильное имя пользователя в противном случае, не так ли? – user384080

ответ

1

У меня была аналогичная проблема в прошлом, и в моем случае, изменив свой код ниже отрезал исправила проблему:

MembershipUser user = Membership.GetUser(username); 
GenericIdentity identity = new GenericIdentity(user.UserName); 
RolePrincipal principal = new RolePrincipal(identity); 
System.Threading.Thread.CurrentPrincipal = principal; 
HttpContext.Current.User = principal; 

Я получил этот совет от следующей темы: http://forums.asp.net/p/939408/1316031.aspx

Надеюсь, что один из ответов там работает и для вас.

Cheers!

Смежные вопросы