c# - WindowsIdentity.GetCurrent().Name 获取应用程序池名称而不是用户名

标签 c# iis

在我的开发机器上,这行代码正确地返回了我的用户名。

public class Constants
{
    public static readonly string Username = WindowsIdentity.GetCurrent().Name.Split('\\')[1];
}

但是当我将应用程序部署到测试网络服务器时,我得到了应用程序池的名称。

我正在使用 Windows 身份验证。

我无法弄清楚为什么会发生这种情况以及如何解决它。

最佳答案

确保在 IIS 中启用 Windows 身份验证并禁用匿名身份验证。

 <system.web>
        <authentication mode="Windows"/>
       <identity impersonate="true"/>
  </system.web>

确保您的应用程序池通过单击“连接为”为“应用程序用户”使用直通身份验证。

确保您的网站在其下运行的应用程序池的身份设置为 ApplicationPoolIdentity。

或者,您可以使用 System.Web.HttpContext.Current.User.Identity.Name; 获取用户名。

关于c# - WindowsIdentity.GetCurrent().Name 获取应用程序池名称而不是用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45086106/

相关文章:

c# - try 和 catch 语句有困难吗?

c# - 结合 2 个数字成为日期 C#

iis - 如何使用 LogParser 找出 IIS 日志中字段的长度?

c# - Entity Framework 事务错误

c# - RemoveAt() 不工作 c#

c# - c# 中的正则表达式找到字母然后\用大写字母作为字母和 Shift 按下其他字符的形式?

iis - HTTP 错误 405.0 - IIS Express 中不允许的方法

sharepoint - 用于帮助台的 Powershell 脚本的 Web 前端

iis - Windows 7中IIS的inetmgr.exe的默认位置是什么,因为我的Windows搜索均无法正常进行。有其他选择吗?

javascript - 在 React SPA 生产应用程序中设置 window.location.href 会产生意外结果