WindowsIdentity.GetCurrent()。Name为我提供应用程序池名称而不是用户名

时间:2017-07-13 16:14:56

标签: c# iis

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

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

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

我正在使用Windows身份验证。

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

1 个答案:

答案 0 :(得分:0)

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

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

单击“连接为”,确保应用程序池正在为“应用程序用户”使用传递身份验证。

确保将Identity设置为运行站点的Application Pool的ApplicationPoolIdentity。

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