缓冲区超过.netcore context.Request.EnableRewind()引发System.IO.Exception

时间:2019-06-24 15:57:10

标签: asp.net-core-2.0

我们有一个使用netcoreapp2.0进行生产部署的应用程序 我们使用context.Request.EnableRewind();在处理之前读取和记录请求。

几天以来,我们间歇性地遇到了AWS Docker ECS中托管的kestrel中未​​处理的异常。

基本上我们的请求大小超过30 Kb,这就是为什么netcore试图使用文件系统缓冲区来回滚请求的原因。并且它抛出File是只读异常。

增加默认缓冲区限制是解决此问题的唯一方法。

context.Request.EnableRewind([int bufferthreashold 30720],long? bufferLimit = null]);

还是有其他方法可以配置请求倒带? 目前我们无法选择升级到2.1。我看到它在2.1中已修复

2019-06-24 14:09:49[41m[30mfail[39m[22m[49m: Microsoft.AspNetCore.Server.Kestrel[13]
[41m[30mfail[39m[22m[49m: Microsoft.AspNetCore.Server.Kestrel[13]
2019-06-24 14:09:49 Connection id "0HLKCN30834Q0", 

Request id "0HLKCN30834Q0:0003B777": An unhandled exception was thrown by the application.
Connection id "0HLKCN30834Q0", Request id "0HLKCN30834Q0:0003B777": An unhandled exception was thrown by the application.
2019-06-24 14:09:49System.IO.IOException: Read-only file system
System.IO.IOException: Read-only file system

1 个答案:

答案 0 :(得分:0)

通过增加默认缓冲区大小来解决。