Значение претензии WIF 4.5 - ссылка на объект не установлена ​​для экземпляра объекта

Я использую новый WIF 4.5 SDK, но у меня есть то же самое раздражающее исключение, которое с помощью LINQ разрешается с помощью.FirstorDefault()

 var claimEmail = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value;

Проблема заключается в том, что идентификатор Windows Live ID не имеет значения адреса электронной почты в заявке, поэтому, если пользователь входит в систему с действительным идентификатором, у меня есть NullReferenceException - Ссылка на объект не установлена ​​на экземпляр объекта. Я также пытался;

var claimEmail = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value.FirstorDefault();

безуспешно

Как я могу вернуть NULL или "", если в претензии нет адреса электронной почты?

Спасибо

1 ответ

Решение

Там нет FirstOrDefault ярлык в ClaimsPrincipal класс, но вы всегда можете просто использовать LINQ для итерации списка утверждений, чтобы сделать то же самое:

var claimEmail = ClaimsPrincipal.Current.Claims.Where(c => c.Type == ClaimTypes.Email).FirstOrDefault();

Или вы можете просто поставить чек, чтобы убедиться, что претензия не пуста:

var claimEmail = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email);
var email = (claimEmail == null ? string.Empty : claimEmail.Value);

Надеюсь, это поможет.

Другие вопросы по тегам