2010-06-08 4 views
3

Я построил службу проверки подлинности в RIA, которая наследует от DomainService и IAuthenticate.Проблема при аутентификации RIA

Проблема заключается в следующую:

Когда LoginOperation не удается (loginOperation.LoginSuccess ложно) из-за неправильные учетные данные, все в порядке, и сообщаются пользователю.

Однако, когда Войти успешно, я получаю бросить действительно странное исключение:

{System.ServiceModel.DomainServices.Client.DomainOperationException: операция не удалось загрузить для запроса «Вход». Значение не может быть нулевым.

Имя параметра: validationErrors ---> System.ArgumentNullException: Значение не может быть нулевым. Имя параметра: validationErrors на System.ServiceModel.DomainServices.Client.QueryCompletedResult..ctor (IEnumerable 1 entities, IEnumerable 1 includedEntities, Int32 TOTALCOUNT, IEnumerable`1 validationErrors)


Я не понимаю этого. Что такое IEnumerable validationErrors, где оно появляется и почему оно должно быть! = Null? Это началось после того, как я портировал службы аутентификации из Nhibernate в Entity Framework. Я даже попытался разобраться в этом исключении и, по-видимому, я единственный, у кого есть эта проблема.

Любая помощь была бы принята с благодарностью.

ответ

0

Кажется, что RIA не поддерживает выражения linq в свойствах. Проблема с Getter в IEnumerable Roles. Вы должны заполнить его вручную; вы не можете писать такие вещи, как return (from a in User.UserRoles select a.Description).AsEnumerable();, это не сработает.

0

У меня была та же проблема, спасибо за вашу помощь !!!

Однако, это возможно, когда вы делаете ToList() так:

[DataMember] 
public IEnumerable<string> Roles 
{ 
    get 
    { 
     return ApplicationRoles.Select(r => r.Name).ToList(); 
    } 
    set 
    { 
     // TODO 
    } 
} 
Смежные вопросы