各位大神,.net core3.1应用,原来用的好好的,近期突然不定时的报错,堆栈信息如下:
at Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException.Throw(RequestRejectionReason reason)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ContentLengthMessageBody.ReadAsyncInternal(CancellationToken cancellationToken)
at Microsoft.AspNetCore.WebUtilities.FormPipeReader.ReadFormAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Features.FormFeature.InnerReadFormAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.Features.FormFeature.ReadForm()
at ClinicalCareService.Models.HttpContext.Request(String Key)
根据您提供的错误信息和堆栈信息来看,这个问题可能是由于请求处理时出现错误引起的。
具体来说,BadHttpRequestException 表明了一个非法的 HTTP 请求被服务器拒绝,可能是由于请求的格式、大小或其它原因导致的。在您的代码中,可能存在处理请求的逻辑出现了问题。
另外,您提供的代码中 HttpContext.Request(String Key) 方法没有完整的代码,无法确定该方法的实现细节。如果可能的话,建议您提供更完整的代码或者更详细的堆栈信息以便更准确地定位问题。
为了解决这个问题,建议您按照以下步骤进行排查:
检查请求格式和大小是否合法,尤其是在处理上传文件等特殊请求时要特别注意。
检查代码中是否存在逻辑错误或者处理异常情况的逻辑不完善导致的错误。
对于一些可能导致请求失败的操作,比如读取大量数据或者网络请求,需要添加相应的错误处理和异常处理逻辑,确保请求能够正确处理并返回正确的响应。
希望以上提示能够对您有所帮助,如果问题依然存在,请提供更多详细的信息以便我们进一步帮助您解决问题。
根据您提供的错误消息,您似乎在.NET Core 3.1应用程序中遇到了BadHttpRequestException。堆栈跟踪指示Kestrel服务器在读取HTTP请求的内容长度时抛出异常。
出现此错误的一个可能原因是请求内容长度大于允许的最大大小。您可以尝试通过向ConfigureServices方法添加以下代码来增加Startup.cs文件中允许的最大请求大小:
services.Configure<FormOptions>(options =>
{
options.MultipartBodyLengthLimit = long.MaxValue;
options.ValueLengthLimit = int.MaxValue;
options.MemoryBufferThreshold = int.MaxValue;
});
此代码将表单数据和其他请求内容的最大允许大小设置为可能的最大值。您可以根据需要调整这些值,以满足应用程序的要求。
此错误的另一个可能原因是请求格式错误或包含无效数据。您可以尝试记录请求内容并检查它是否有任何问题。您也可以尝试使用Fiddler或Wireshark之类的工具来捕获和分析HTTP流量。
根据堆栈信息,这个错误出现在ASP.NET Core应用程序的Kestrel服务器中。Kestrel服务器是ASP.NET Core应用程序的默认Web服务器。
具体来说,错误是由“BadHttpRequestException”引发的,这通常是由于HTTP请求包含不正确的内容而导致的。 在这种情况下,HTTP请求似乎包含的内容长度不正确,导致服务器无法正确处理请求。
根据错误日志中的调用堆栈,问题出现在尝试读取HTTP消息正文时。此外,日志还显示ASP.NET Core应用程序尝试从HTTP请求中读取表单数据。
因此,这个问题可能与应用程序中处理表单数据的代码有关。请检查代码中读取表单数据的过程是否正确,特别是对内容长度的读取处理是否正确。您也可以在代码中添加适当的错误处理来捕获这个错误并提供更有用的错误信息。
这个错误通常是由于请求内容不完整或传输中断导致的。有几种可能的原因: