【问题标题】:System.ArgumentNullException: Value cannot be null in postmanSystem.ArgumentNullException:邮递员中的值不能为空
【发布时间】:2021-08-29 03:11:55
【问题描述】:

运行此代码并尝试登录时发现此错误 System.ArgumentNullException:值不能为空。 当我从邮递员登录时

swagger 中从未发现此错误 如何解决,谢谢

        [HttpPost("login")]
        public async Task<IActionResult> Login(UserForLoginDto userForLoginDto)
        {
            var user = await _userManager.FindByNameAsync(userForLoginDto.UserName);
            var result = await _signInManager.CheckPasswordSignInAsync(user,userForLoginDto.Password,false);
            if(result.Succeeded){
                var appUser = await _userManager.Users.FirstOrDefaultAsync(
                    u=>u.NormalizedUserName==userForLoginDto.UserName.ToUpper()
                );
                var userToReturn = _mapper.Map<UserForListDto>(appUser);
                return Ok(new
            {
                token = GenerateJwtToken(appUser).Result,
                user = userToReturn
            });
            }
            return Unauthorized();
            }

大摇大摆

在邮递员中

邮递员屏幕

【问题讨论】:

  • 以招摇和邮递员的形式显示您发送的请求...您似乎没有在请求中设置用户名...
  • 你能告诉你的 userForLoginDto 吗?
  • public class UserForLoginDto { public string Password { get;放; } 公共字符串用户名 { 获取;放; } } @Serge

标签: c# asp.net asp.net-web-api


【解决方案1】:

当您在 Postman 中使用 Post 方法进行测试时,尝试将 [FromBody] 添加到操作中

[HttpPost("login")]
 public async Task<IActionResult>Login([FromBody] UserForLoginDto userForLoginDto)

{
   if( string.IsNullOrEmpty( userForLoginDto.UserName) ||
          string.IsNullOrEmpty( userForLoginDto.Password)) return ...error code.
  ....
}

并在你的身体中使用这个输入参数>raw>邮递员的json

{
  "UserName":"userName",
  "Password": "password"
}

【讨论】:

  • 状态 415 不支持的媒体类型
  • 你必须在你的邮递员中使用 body>raw>json。
  • 添加仍然比我从未发现过的应用程序发现相同的错误
  • 如果您发布 Postman 的屏幕截图可能会有用
  • 很高兴你。请不要忘记接受答案。
猜你喜欢
  • 2021-08-01
  • 1970-01-01
  • 2020-03-01
  • 2020-09-25
  • 2013-02-10
  • 2019-11-01
  • 1970-01-01
  • 2018-07-10
  • 2021-10-11
相关资源
最近更新 更多