Значение претензии 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);
Надеюсь, это поможет.