Kestrel HTTPS BadHttpRequestException

时间:2017-03-09 07:54:33

标签: https kestrel

通过HTTP和Visual Studio内部工作正常。但是,当我尝试通过HTTPS访问端点时,我发现此错误并且我不完全确定如何找出问题:

info: Microsoft.AspNetCore.Server.Kestrel[17]
  Connection id "0HL36O0ESIPBQ" bad request data: "Invalid request line: <0x16><0x03><0x01><0x00><0x83><0x01><0x00><0x00><0x7F><0x03><0x01>X<0xC1><0x07><0xDC><0x9E>~Y<0x05><0x13><0xC1><0xF4>^J<0xCF><0xAB><0x11><0xC3>R[<0x87><0x1D>..."Microsoft.AspNetCore.Server.Kestrel.BadHttpRequestException: Invalid request line: <0x16><0x03><0x01><0x00><0x83><0x01><0x00><0x00><0x7F><0x03><0x01>X<0xC1><0x07><0xDC><0x9E>~Y<0x05><0x13><0xC1><0xF4>^J<0xCF><0xAB><0x11><0xC3>R[<0x87><0x1D>

Fiddler给了我这个:

System.IO.IOException The handshake failed due to an unexpected packet format.

我的直觉告诉我这与从dotnet核心1.0.1迁移到1.1.0有关。在此之前,这一切都很好,但同样可能我把其他东西搞砸了,我只是不确定是什么! :)

2 个答案:

答案 0 :(得分:1)

确定。我会回答我自己的问题。事实证明我只需要在program.cs中将.UseHttps添加到我的WebHostBuilder:

.UseKestrel(options =>
{
    options.AddServerHeader = false;
    options.UseHttps("MyPfx", "MyPassword");
})

我想我有点困惑,如果没有这个,这是如何工作的,但嘿,它现在有效!

答案 1 :(得分:1)

我会以答案的形式添加保罗的暗示。

.UseHttps类位于“Microsoft.AspNetCore.Server.Kestrel.Https”模块中,可以通过在Package Manager UI中搜索“usehttps”或将其添加到project.json文件来添加。请注意,在撰写本文时,版本1.1.1现在可用于ASP.NET Core,因此请务必选择所需的版本。

不确定它会解决我的问题,但也许它会解决其他人读这个问题。