Asp.Net核心错误?具有Windows身份验证的Blazor / Http.Sys显示“连接已重置”?

时间:2019-12-06 18:08:08

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

更新: 刚刚尝试了官方示例https://github.com/aspnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/servers/httpsys/samples/3.x/SampleApp,但它不起作用。

更多信息:

This site can’t provide a secure connection
localhost sent an invalid response.

输出:

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\xxx\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
warn: Microsoft.AspNetCore.Server.HttpSys.MessagePump[0]
      Overriding address(es) 'https://localhost:5001, http://localhost:5000'. Binding to endpoints added to UrlPrefixes instead.
info: Microsoft.AspNetCore.Server.HttpSys.HttpSysListener[0]
      Start
info: Microsoft.AspNetCore.Server.HttpSys.HttpSysListener[0]
      Listening on prefix: http://localhost:5005/
info: Microsoft.Hosting.Lifetime[0]
      Now listening on: http://localhost:5005/
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\Users\xxx\Downloads\AspNetCore.Docs-master\AspNetCore.Docs-master\aspnetcore\fundamentals\servers\httpsys\samples\3.x\SampleApp

我使用Windows身份验证创建了一个新的Blazor应用程序。 (Visual Studio 2019 V16.4.0,.Net Core 3.1)。

现在,在Visual Studio中与IIS Express一起运行时,Windows身份验证可以工作(网页的右上角显示“ Hello Domain \ Username!”)。但是,作为Kestrel应用程序运行时,Windows身份验证无法正常工作。

我按照以下链接中的步骤进行操作,以使Windows身份验证可以与Http.Sys一起使用。 (顺便说一句,我尝试过[茶est /谈判] [1],但是没有运气)

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?view=aspnetcore-3.1

基本上,它只是在webBuilder.UseHttpSys()的{​​{1}}中添加CreateHostBuilder()的调用。

Program.cs

但是,运行该应用程序将获得一个错误页面,其中显示消息

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseHttpSys(options =>
                {
                    options.AllowSynchronousIO = true;
                    options.Authentication.Schemes = AuthenticationSchemes.None;
                    options.Authentication.AllowAnonymous = true;
                    options.MaxConnections = null;
                    options.MaxRequestBodySize = 30000000;
                    // options.UrlPrefixes.Add("http://*:5005");
                });
                webBuilder.UseStartup<Startup>();
            });

This site can’t be reached
The connection was reset.

Edge的错误消息是:

This site can’t provide a secure connection
localhost sent an invalid response.

IE错误消息:

  

无法安全连接到此页面

     

这可能是因为该站点使用了过时或不安全的TLS安全设置。如果这种情况持续发生,请尝试与网站所有者联系。

1 个答案:

答案 0 :(得分:0)

解决方案是重新定位您的证书,并进行一些似乎没有必要的手动配置:我非常密切地关注 http.sys 示例的 Configure Windows Server 部分,但是运行了netsh http sslcert 命令的问题。问题在于 dotnet dev-certs https --trust 在哪里安装证书!在 What is the default location for certificates created using "dotnet dev-certs https" 中指出该工具将证书安装在当前用户的证书存储中,而不是本地计算机存储中。我必须将两个证书存储添加到 mmc 并将 localhost 证书复制到 Certificates (Local Computer)\Personal\Certificates,此时 sslcert 命令完成,当我运行测试应用程序时,它成功与 TLS 连接。