在 Kestrel、.NET Core 和 NGiNX 中,应用程序在未读取整个请求正文错误的情况下完成

Application completed without reading entire request body error in Kestrel, .NET Core with NGiNX

我有一个 api 端点 someroute/{someid} 需要一个 multipart/octet post 这样我就可以接受多个文件。

我正在利用 .NET Cores MultipartReader 异步读取文件。

在我的本地计算机上测试此上传时,一切正常。在我的本地机器上,当我 运行 通过我们的 NGiNX 代理到 .NET Core 中的 Kestrel 时,它仍然运行良好。但是,当我将它部署到 Linux 环境中的 Docker 容器时,它失败并显示 "Application completed without reading entire request body".

我安装了一些请求日志记录中间件,看起来 post 的主体确实通过 NGiNX 到达了 Kestrel,但是 none 我的路由中的代码被调用了。

同样,这在我的机器上本地工作,在本地有一个 NGiNX 代理在它前面。

任何想法都会有所帮助。

好的,为那些可能被这个错误困住的人弄明白了。最后这与我的 NGiNX 或 docker 配置无关。在我的控制器的构造函数中,我正在读取一个不存在的配置值。这引发了一个异常,导致我的方法永远不会被调用。

因此,对于遇到 "Application completed without reading entire request body..." 的任何人,您可能需要检查构造函数是否存在问题。