不知道大神有没有遇到过,在请求对方post过来的数据时,出现这个异常
详细堆栈如下:
Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Unexpected end of request content.
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ContentLengthMessageBody.ReadAsyncInternal(CancellationToken cancellationToken)
at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder1.StateMachineBox
1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.ReadAsyncInternal(Memory`1 destination, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 count)
at System.IO.StreamReader.ReadBuffer()
at System.IO.StreamReader.ReadToEnd()
at Agoda.Order.WebApi.Controllers.AgodaController.GetRequestBodyAsyncTRequest in E:\svn\XiWan.OTA\Agoda.Order\src\Agoda.Order.WebApi\Controllers\AgodaController.cs:line 185
at Agoda.Order.WebApi.Controllers.AgodaController.HotelSearch() in E:\svn\XiWan.OTA\Agoda.Order\src\Agoda.Order.WebApi\Controllers\AgodaController.cs:line 113
这是正常的异常,可以忽略
这种问题不可避免吗?比例挺高的,我统计了一下差不多1/3了,这种是不是队列请求排队超时导致的,但是怎么配置,都会一直出现,出现读取Request.Body 为空的情况。
@虔城墨客:
你确定资源足?
最小线程配置高些,你这1/3肯定是服务器问题,没道理那么多客户都取消了请求!
错误在 E:\svn\XiWan.OTA\Agoda.Order\src\Agoda.Order.WebApi\Controllers\AgodaController.cs:line 113
你这里是不是有读取读取Request.Body
的操作
有的,读取了requestBofy
using (StreamReader sr = new StreamReader(Request.Body))
{
content =await sr.ReadToEndAsync();
RequestBody = content;
}
@虔城墨客:
在前面加上 一句Request.EnableBuffering();
@jzblive: 试过了,没用
您好,问题有解决吗?
你好,解决了么 我也遇到这个问题,很小的一程序 隔一段时间就会这样线程打满
读取完成后要重置到0位置,否则下一个代码读不到这个内容,数据流的游标