在ASP.NET Core IIS中,当使用Windows身份验证时,从HTTP请求中获取到的Windows用户名应该是当前登录用户的用户名。但是,有时候会出现这样的问题:在读取Windows身份验证后,应用程序返回的是DefaultAppPool而非Windows用户名。
这个问题通常是由于应用程序池的身份配置不正确造成的。为了解决这个问题,可以在应用程序池的身份配置中明确指定使用自定义身份。例如:
在上面的代码中,“DOMAIN\UserName”和“password”分别是应用程序池应该使用的用户名和密码。
除了明确指定应用程序池的身份配置外,还有一种更细粒度的解决方法,那就是在应用程序中手动获取Windows用户名。可以使用以下代码获取当前登录用户的Windows用户名:
var userName = User.Identity.Name;
这个代码会从HTTP请求中获取当前登录用户的Windows用户名,并将其存储在变量userName中。通过使用这种方法,可以确保应用程序总是返回正确的Windows用户名。