当前位置: 首页 > 知识库问答 >
问题:

基础连接已关闭。无法使用http.sys运行ASP.NET core 2.1 web api应用程序?

胡星汉
2023-03-14

我创建了一个新的ASP.NET Core2.1web应用程序,然后选择“API”模板。(我将身份验证更改为“Windows”。然后添加以下代码,使用http.sys进行Windows身份验证。(https://docs.microsoft.com/en-us/aspnet/core/security/Authentication/windowsauth?view=aspnetcore-2.1&tabs=aspnetcore2x)

using Microsoft.AspNetCore.Server.HttpSys; // Added

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            // Added
            .UseHttpSys(o => 
            {
                o.Authentication.Schemes = AuthenticationSchemes.NTLM | 
                                           AuthenticationSchemes.Negotiate;
                o.Authentication.AllowAnonymous = false;
            });

下面的消息显示了运行应用程序时的输出消息。

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\...\AppData\Local\ASP.NET\Da
taProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.AspNetCore.Server.HttpSys.HttpSysListener[0]
      Start
info: Microsoft.AspNetCore.Server.HttpSys.HttpSysListener[0]
      Listening on prefix: https://localhost:5001/
info: Microsoft.AspNetCore.Server.HttpSys.HttpSysListener[0]
      Listening on prefix: http://localhost:5000/
Hosting environment: Development
Content root path: C:\work\WebApplication1
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

用powershell测试

PS C:\work> Invoke-WebRequest https://localhost:5001/api/values
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
At line:1 char:1
+ Invoke-WebRequest https://localhost:5001/api/values
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

PS C:\work> Invoke-WebRequest http://localhost:5000/api/values
Invoke-WebRequest : The remote server returned an error: (401) Unauthorized.
At line:1 char:1
+ Invoke-WebRequest http://localhost:5000/api/values
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

fiddler.network.HTTPS>HTTPS与本地主机握手失败(#3)。System.io.ioException无法从传输连接读取数据:远程主机强制关闭了现有连接。<现有连接被远程主机强制关闭

Internet Explorer返回以下消息。

在高级设置中打开TLS 1.0、TLS 1.1和TLS 1.2,然后再次尝试连接到https://localhost:5001。如果此错误仍然存在,则此站点可能使用了不受支持的协议或密码套件,如RC4(详细信息链接),这被认为是不安全的。请与您的站点管理员联系。

共有1个答案

颜文昌
2023-03-14

您需要在ACL中添加/安装自签名证书,并且需要添加到本地主机的“受信任的根证书颁发机构”中。

u可以注释app.useHttpsRedirection();,在LaunchSettings.json中,您需要以下内容:

"applicationUrl": "http://localhost:5000",
"iisExpress": {
  "applicationUrl": "http://localhost:49845",
  "sslPort": 0 //44382
 类似资料:
  • =================================================================================================================================================================堆栈跟踪: 位于system.net.httpWebRequest.Endge

  • 正如我前面所说的,我能够在visual studio的调试模式下使其正确工作,但一旦创建了可执行文件,我就不能再读取网页了。如有任何帮助,我们将不胜感激。是什么导致了这个问题?

  • 问题内容: 由于Google拒绝除已成立公司之外的所有公司访问Google MyBusiness的API密钥,因此我尝试使用seleniumwebdriver自动执行更改我的业务信息的过程。 什么有效? 通过自动执行登录表单登录到Google Mybusiness。 什么不起作用? 登录后,我需要打开编辑工作时间的小模式。我试图自动单击“编辑”按钮,但不幸的是,出现此错误: 我的代码: 堆栈跟踪:

  • 我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)

  • 我通过play framework和mariadb客户端使用hikari pool connection,由于我定期更新它们(play 2.6.5->2.6.6和mariadb 2.1.1->2.1.2,但不确定是否相关),我出现了以下错误: 我在这里发现了一个相关的问题,并试图将idleTimeout和maxLifetime更改为2分钟和5分钟,但错误仍然发生。 我使用的是HikariCP 2.

  • 这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题将在另一个 Stack Exchange 站点上成为主题,您可以发表评论以解释在哪里可以回答该问题。 我昨天安装了macOS v11 (Big Sur ),从那以后我就不能运行一些旧的应用程序了。这是我得到的信息: 您没有权限打开应用程序 我认为此应用程序来自未知的开发人员。 我尝试了在macOS v10.15