我们有一个使用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
答案 0 :(得分:0)
通过增加默认缓冲区大小来解决。