You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core使用HTTP.sys启用Windows认证时Postman报ECONNRESET错误求助

问题原因及解决方案

1 请求协议与重定向冲突

你配置了app.UseHttpsRedirection()中间件,若Postman发送的是HTTP请求,服务端会触发重定向跳转HTTPS,而NTLM认证是基于长连接的会话机制,重定向会中断认证握手流程,直接导致连接被重置。

  • 解决方案:优先用HTTPS地址发起请求,测试阶段可临时注释app.UseHttpsRedirection()再验证。

2 运行权限不足

HTTP.sys的身份认证配置需要系统管理员权限才能生效,若启动项目时未用管理员权限运行Visual Studio/终端,会导致HTTP.sys配置加载失败,主动断开客户端连接。

  • 解决方案:右键点击运行环境(VS/终端),选择「以管理员身份运行」后重启项目。

3 Postman NTLM配置错误

本地Windows账户的NTLM认证对参数有明确要求,配置错误会触发连接重置:

  • 本地账户的**域(Domain)**栏填.(英文句号)或者本地计算机名,不要留空
  • 用户名不要加计算机名前缀,直接填本地账户名即可
  • 若你当前Windows用微软账户登录,需额外设置本地账户密码,不能直接用微软账户密码做NTLM认证

4 SSL证书验证拦截

若你使用HTTPS测试且用的是开发环境自签名证书,Postman默认会拦截不受信任的SSL证书,间接导致连接中断。

  • 解决方案:打开Postman设置 -> 通用选项卡,关闭SSL certificate verification开关后重试。

5 接口缺少认证触发配置

你在HTTP.sys配置中设置了options.Authentication.AllowAnonymous = true,若测试接口没有添加[Authorize]特性,服务端不会主动触发Windows认证握手流程,异常情况下会直接断连。

  • 解决方案:在测试的Controller或者Action上添加[Authorize]特性。
现有配置校验

你给出的两个配置文件代码本身没有顺序错误:

Startup.cs 核心逻辑

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddAuthentication(HttpSysDefaults.AuthenticationScheme);

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "webwinauth", Version = "v1" });
    });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "webwinauth v1"));
    }

    app.UseHttpsRedirection();

    app.UseRouting();
    // 认证、授权中间件顺序符合要求
    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

Program.cs 核心逻辑

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>()
            .UseHttpSys(options =>
            {
                options.Authentication.Schemes = 
                    AuthenticationSchemes.NTLM | 
                    AuthenticationSchemes.Negotiate;
                options.Authentication.AllowAnonymous = true;
            });
        });

内容的提问来源于stack exchange,提问作者李侑珊

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:57:02