ASP.NET Web API用户存在校验接口返回结果异常求助
ASP.NET Web API用户存在校验接口返回结果不稳定问题
我在实现用户创建接口的存在校验功能时遇到异常,接口返回结果极不稳定,具体情况如下:
接口实现代码
[HttpPost("Create")] [Authorize(Policy = "OnlyAdmin")] public async Task<ActionResult<User>> Register ([FromBody] SenderCredentials sender, [FromQuery] UserDto request) { if (await _validator.isUserExist(request.Login) == true) { return BadRequest($"User {request.Login} alreay exist"); } if (await _validator.isUserExist(sender.SenderLogin) == false) { return BadRequest($"User {sender.SenderLogin} doesen't exist"); } var newUser = _mapper.Map<User>(request); newUser.Birthday = request.Birthday; newUser.Gender = request.Gender; newUser.IsAdmin = request.IsAdmin; newUser.Name = request.Name; newUser.CreatedOn = DateTime.UtcNow; newUser.CreatedBy = sender.SenderLogin; /*await _userContext.Users.AddAsync(newUser); await _userContext.SaveChangesAsync();*/ return Ok(newUser); }
校验服务实现
我自定义了Validator验证服务,仅包含用户存在校验方法:
public async Task<bool> isUserExist(string login) { var user = await _userContext.Users.FirstOrDefaultAsync(i => i.Login == login); if (user == null) { return false; } return true; }
异常现象
通过Swagger调用接口时,传入相同数据却得到不同结果:
- 带断点调试时表现正常;
- 仅启动调试无断点时,初期调用正常,多次调用后要么返回200状态码但无响应体,要么返回400状态码但无错误提示信息;
- 不启动调试直接运行时,首次调用可能正常,后续调用均返回200状态码。
已尝试方案
曾尝试使用过滤器和特性实现相同的校验逻辑,问题依然存在。
内容的提问来源于stack exchange,提问作者Divergent7
相关产品推荐
相关产品推荐

