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

ASP.NET Core配置web.config获取Windows登录用户报错如何解决?

解决方案

1. 修正获取登录用户的代码(核心根因)

你当前使用的System.Security.Principal.WindowsIdentity.GetCurrent()获取的是应用进程本身的运行身份:本地开发时IIS Express用你当前登录的Windows账号运行,所以返回值符合预期;部署到IIS后进程身份是应用池账号,自然返回应用池名称。
正确的请求端登录用户获取写法:

[Route("getUser")]
[HttpGet]
public IActionResult GetUser()
{
    // 从请求上下文获取登录用户身份,而非进程身份
    var loginUser = User.Identity;
    return Ok(loginUser.Name);
}

2. 配置项目认证服务(解决本地401.2错误)

ASP.NET Core需要手动注册并启用Windows认证中间件,否则仅开启配置也会返回401.2未授权错误,在Startup.cs中做如下修改:

  • 在ConfigureServices方法中添加服务注册:
services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);
  • 在Configure方法中启用中间件,注意必须放在UseMvc之前:
app.UseAuthentication();

3. 解决本地开发环境配置锁定问题

本地用IIS Express开发时,认证配置由launchSettings.json控制,不需要在web.config中添加system.webServer/security/authentication节点,直接删掉web.config里的这段配置即可消除“配置节被父级锁定”报错。
launchSettings.json的iisSettings保持如下配置即可:

"iisSettings":{
    "windowsAuthentication": true,
    "anonymousAuthentication": false
    ...
}

4. 生产IIS部署配置

  1. 先在IIS服务器上安装Windows认证功能:打开服务器管理器→添加角色和功能→角色服务→Web服务器(IIS)→安全,勾选「Windows认证」完成安装。
  2. 直接删除web.config里整段system.web节点,该配置是传统ASP.NET使用的,ASP.NET Core完全不生效。
  3. 修正aspNetCore节点的拼写错误,确保配置正确:
<aspnetCore processPath="你的应用路径" forwardWindowsAuthToken="true" hostingModel="InProcess">
</aspnetCore>
  1. 站点认证配置可以直接在IIS管理器操作:打开对应站点的功能视图→身份认证,启用Windows认证、禁用匿名认证即可。如果需要通过web.config控制该配置,先解锁IIS全局配置节:点击IIS管理器根节点(服务器名称)→打开「配置编辑器」→定位到system.webServer/security/authentication→点击右侧操作栏的「解锁节」即可。

内容的提问来源于stack exchange,提问作者Guy E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:18:00