web-dev-qa-db-ja.com

ASP.NET Core 2.1の無効な要求行の問題

Linux Docker ASP.NET Coreコンテナサーバーのログは、.NET Core 2.0から.NET Core 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秒ごとに1桁ずつ増加します。ヘックスは意味のあるものに変換されないようです(NUL NUL NUL SOH NUL NUL EOT NUL ESC NUL NUL LF)。

除外したもの:

  • WAN/LANから発信されたものではありません(コンテナへのネットワークアクセスが無効になっており、エントリはまだ生成されています)。
  • 開発環境では発生しません(windows w/Visual Studio)
  • Dockerコンテナを再デプロイしても問題は解決しません。
  • Kestrelはhttpのみに設定されているため、SSLの問題とは考えていません。 httpsおよびwssを介してアプリとそのwebsocket(SignalR)にアクセスできます。
8
Yang

これは、ドッカーホスト(debian)とハングソケット(netstatに多くのTIME_WAITが表示される)の問題であることが判明しました。アプリポートを別のポートに変更し、不正な形式のリクエストを停止しました。

Dockerデーモンを再起動または再起動するとおそらく修正されますが、他のコンテナーの稼働時間は重要であるため、テストできませんでした。

4
Yang

HTTPS経由でHTTPエンドポイントにアクセスしているようです。

4
Gurgen Sargsyan