ASP.NET Core 2.1 无效请求行问题
ASP.NET Core 2.1 Invalid Request Line Issue
自从我们从 .NET Core 2.0 更新到 .NET Core 后,我们的 Linux Docker ASP.NET 核心容器服务器日志被以下 'Informational' 日志条目填充。 NET 核心 2.1(SDK 2.1.302):
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/digit。十六进制似乎没有转化为任何有意义的东西 (NUL NUL NUL SOH NUL NUL EOT NUL ESC NUL NUL LF
)。
我们排除的事情:
- 它不是来自 WAN/LAN(禁用网络访问
容器和条目仍在生成中)。
- 它不会出现在我们的开发环境中(windows w/ Visual Studio)
- 重新部署 docker 容器无法解决问题。
- 我们认为这不是 SSL 问题,因为 kestrel 仅针对 http 配置。我们可以通过 https 和 wss
访问应用程序及其 websockets (SignalR)
原来这是 docker 主机 (debian) 和挂起的套接字(netstat 显示很多 TIME_WAITs)的问题。将应用程序端口更改为其他端口,格式错误的请求停止。
重新启动或重新启动 docker 守护程序也可能会修复它,但我们其他容器的正常运行时间至关重要,因此我们无法对其进行测试。
您似乎正在通过 HTTPS 访问 HTTP 端点。
我遇到了同样的问题,在我的情况下,解决方案是在 nginx 配置中 - 我将 proxy_pass 设置为 https://localhost:4000 而不是 http://localhost:4000
自从我们从 .NET Core 2.0 更新到 .NET Core 后,我们的 Linux Docker ASP.NET 核心容器服务器日志被以下 'Informational' 日志条目填充。 NET 核心 2.1(SDK 2.1.302):
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/digit。十六进制似乎没有转化为任何有意义的东西 (NUL NUL NUL SOH NUL NUL EOT NUL ESC NUL NUL LF
)。
我们排除的事情:
- 它不是来自 WAN/LAN(禁用网络访问 容器和条目仍在生成中)。
- 它不会出现在我们的开发环境中(windows w/ Visual Studio)
- 重新部署 docker 容器无法解决问题。
- 我们认为这不是 SSL 问题,因为 kestrel 仅针对 http 配置。我们可以通过 https 和 wss 访问应用程序及其 websockets (SignalR)
原来这是 docker 主机 (debian) 和挂起的套接字(netstat 显示很多 TIME_WAITs)的问题。将应用程序端口更改为其他端口,格式错误的请求停止。
重新启动或重新启动 docker 守护程序也可能会修复它,但我们其他容器的正常运行时间至关重要,因此我们无法对其进行测试。
您似乎正在通过 HTTPS 访问 HTTP 端点。
我遇到了同样的问题,在我的情况下,解决方案是在 nginx 配置中 - 我将 proxy_pass 设置为 https://localhost:4000 而不是 http://localhost:4000