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

.NET 6 Web应用Windows身份验证IIS部署后凭据输入异常问题

.NET 6 Web应用Windows身份验证IIS部署后凭据输入异常问题

我完全懂你现在的困扰——本地用IIS Express跑.NET 6 Windows认证应用一切正常,部署到服务器IIS后,访问时弹出的登录框居然要求输入邮箱格式的用户名,但你的服务器本地账户根本没绑定邮箱,用纯用户名连远程桌面都没问题,偏偏Web端卡在这一步了。

问题原因分析

这种情况大多是IIS Windows认证里的Negotiate协议在主导:它会优先尝试Kerberos认证,而Kerberos处理本地账户时,默认会要求用户主体名称(UPN,也就是类似邮箱的格式),但你的本地账户并没有配置UPN,所以就出现了这个不符合预期的输入要求。

具体解决方案

下面是几个可以尝试的解决步骤,按优先级来:

  • 调整IIS站点的Windows认证提供者顺序

    1. 打开IIS管理器,定位到你的目标站点,进入「身份验证」功能
    2. 右键点击「Windows身份验证」,选择「提供程序」
    3. 将NTLM移到列表最上方(把Negotiate挪到下面),这样IIS会优先使用NTLM认证,它支持纯本地用户名格式(比如服务器名\用户名或者直接输入本地用户名)
  • 确认应用的认证配置
    检查你的web.config文件,确保Windows认证已正确启用,配置示例如下:

    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
          <anonymousAuthentication enabled="false" />
        </authentication>
      </security>
    </system.webServer>
    

    同时在Program.cs里要确保已经添加了Windows认证服务:

    builder.Services.AddAuthentication(IISDefaults.AuthenticationScheme);
    
  • 浏览器端辅助设置(可选)
    如果上面的方法还没解决,可以把你的站点地址添加到浏览器的本地Intranet区域(比如Edge/IE的「Internet选项」→「安全」→「本地Intranet」→「站点」添加),这样浏览器会自动尝试用当前登录的Windows账户做认证,不用手动输入凭据。

补充说明

如果你的服务器是域环境,可能还需要检查域账户的UPN配置,但根据你的描述是本地账户,所以优先调整IIS的认证提供者顺序应该就能解决问题。

备注:内容来源于stack exchange,提问作者Kuchta1212

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:24:29