因此,将 ASP .NET Web API 从 .NET Framework 升级到 .NET 8 后,所有控制器的端点都无法从请求正文获取任何值。即使控制器无法从主体获取值,API 中间件也可以获取该值。
这是我第一次尝试修复的端点之一:
[HttpPost]
[Route("~/alliance/Dispositivo/ValidarUsuario")]
public Models.Usuario PostValidarUsuario([FromBody] Dispositivo dispositivo)
{
Models.Usuario usuario = UsuarioDL.pa_validar_usuario(
dispositivo.Usuario,
dispositivo.Password,
dispositivo.LocalId);
var usuarioInfo = DispositivoDL.pa_validar_dispositivo(dispositivo, usuario);
if (usuario == null)
usuario = new Models.Usuario(usuarioInfo);
else
usuario.UpdateUsuarioInfo(usuarioInfo);
return usuario;
}
这是我目前从邮递员那里得到的结果:
{
"Type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"Title": "One or more validation errors occurred.",
"Status": 400,
"Errors": {
"$": [
"The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0."
],
"dispositivo": [
"The dispositivo field is required."
]
},
"traceId": "00-08fa4fba4ab19ff884fd34ee4e4251e8-2f9a05b74a5f573f-00"
}
我还尝试从 Request 属性获取值,但结果始终是空字符串。
此外,我还确保 Content-Type 标头值为 application/json
@Alexander Burov 的评论
您提到了一些具有价值的中间件。也许它会读完流?您可以尝试调用 s.Seek(0) 重置它。 – 亚历山大·布罗夫