У меня есть эта ошибка в визуальном коде на новом Claim(ClaimTypes.Name, userFromRepo.Username)
, сообщающем Argument 1: cannot convert from 'string' to 'System.IO.BinaryReader'
.Мой код был такой:
public async Task<IActionResult> ReadUser([FromBody]UserDto userDto){
User userFromRepo = _authRepository.GetUserAsync();
//generate token for user
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes("my secret key");
var tokenDescriptor = new SecurityTokenDescriptor{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
new Claim(ClaimTypes.Name, userFromRepo.Username) //error here in this ctor
}),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
};
После добавления ключевого слова await
, пропущенного перед моим методом репозитория, который, кстати, асинхронный, ошибка исчезла.
public async Task<IActionResult> ReadUser([FromBody]UserDto userDto){
User userFromRepo = await _authRepository.GetUserAsync(); //added await
//generate token for user
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes("my secret key");
var tokenDescriptor = new SecurityTokenDescriptor{
Subject = new ClaimsIdentity(new Claim[]
{
new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
new Claim(ClaimTypes.Name, userFromRepo.Username) //error gets fixed
}),
Expires = DateTime.Now.AddDays(1),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
};
ВозможноВы сталкивались с чем-то похожим на это?