ASP.NET Core 2.1无效的请求行问题

时间:2018-07-23 03:05:00

标签: c# asp.net-core kestrel-http-server

自我们从.NET Core 2.0更新到.NET Core 2.1(SDK 2.1.302)以来,我们的Linux docker asp.net核心容器服务器日志已由以下“信息性”日志条目填充:

INFO|Microsoft.AspNetCore.Server.Kestrel|Connection id "0HLFG42JUAORG" bad request 
data: "Invalid request line: 
'CNXN\x00\x00\x00\x01\x00\x00\x04\x00\x1B\x00\x00\x00M\x0A'" 
Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Invalid 
request line: 'CNXN\x00\x00\x00\x01\x00\x00\x04\x00\x1B\x00\x00\x00M\x0A'

INFO|Microsoft.AspNetCore.Server.Kestrel|Connection id "0HLFG42JUAORH" bad request 
data: "Invalid request line: 
'CNXN\x00\x00\x00\x01\x00\x00\x04\x00\x1B\x00\x00\x00M\x0A'" 
Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Invalid 
request line: 'CNXN\x00\x00\x00\x01\x00\x00\x04\x00\x1B\x00\x00\x00M\x0A'

连接ID每秒钟大约增加1个alpha /数字。十六进制似乎并没有转化为任何有意义的内容(NUL NUL NUL SOH NUL EUL NOT ESC NUL NUL LF)。

我们排除的事物:

  • 它不是源自WAN / LAN(已禁用对 容器和条目仍在生成中)。
  • 在我们的开发环境(带有Visual Studio的Windows)中不会发生
  • 重新部署docker容器不能解决问题。
  • 我们认为这不是SSL问题,因为kestrel仅配置为http。我们可以通过https和wss来访问该应用及其Websocket(SignalR)

3 个答案:

答案 0 :(得分:7)

您似乎正在通过HTTPS到达HTTP端点。

答案 1 :(得分:3)

原来这是docker主机(debian)和挂套接字(netstat显示很多TIME_WAIT)的问题。将应用程序端口更改为另一个端口,并且格式错误的请求已停止。

重新启动或重新启动docker守护程序也可能会解决该问题,但是其他容器的正常运行时间至关重要,因此我们无法对其进行测试。

答案 2 :(得分:0)

我遇到了同样的问题,在我的情况下,解决方案是在nginx配置中-我已将proxy_pass设置为https:// localhost:4000而不是http:// localhost:4000