使用system.environment.username在iis7上托管时无法获取用户名

时间:2015-09-09 13:14:18

标签: c# asp.net webforms iis-7

我有一个asp.net Web表单应用程序,它为用户提供身份验证。我需要获取当前登录到Windows的用户的用户名。我使用以下方法检索了用户名:

  • WindowsIdentity.GetCurrent()名称;
  • Request.ServerVariables.Get(" AUTH_USER&#34);

我的问题是当我在IIS 7中托管应用程序时,用户名显示为syssai-sql。

我不知道该怎么做才能做到这一点。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您不应该使用System.Environment.Username。这是为了获得服务器进程正在运行的身份。它在本地测试时“工作”的原因是它们是相同的,Web应用程序作为您的用户帐户运行。服务器的行为方式不同。

相反,请使用HttpContext.Current.User.Identity.Name属性。在IIS中,确保为Windows身份验证设置了Web应用程序,并禁用了匿名身份验证。

其他信息:User属性是IPrincipal,并且具有Name属性,其中包含当前登录用户的用户名。

答案 1 :(得分:0)

添加System.Security.Principal命名空间并尝试以下操作:

WindowsIdentity wi = HttpContext.Current.Request.LogonUserIdentity;

然后您可以访问各种属性,如

wi.Name