出现这种情况的原因可能是因为在读取Request.Body之前,没有将其位置重置为起始位置。
以下是一个示例代码,演示如何解决这个问题:
[HttpPost]
public async Task MyPostAction()
{
// 重置Request.Body的位置为起始位置
Request.Body.Position = 0;
// 读取Request.Body
using (StreamReader reader = new StreamReader(Request.Body))
{
string requestBody = await reader.ReadToEndAsync();
// 处理请求体
// ...
}
// 其他逻辑
// ...
return Ok();
}
在这个示例中,我们首先将Request.Body的位置重置为起始位置,然后再读取它。这样做可以确保在读取之前,流的位置是正确的,从而避免发生长度为0的情况。
请注意,这个解决方法适用于Asp Net Core Web Api的POST请求中的Request.Body始终为0长度的情况。如果你的情况不同,请提供更多详细信息,以便我可以提供更准确的帮助。