获取当前Windows用户返回“IIS APPPOOL / Sitename”

时间:2015-05-13 22:07:41

标签: asp.net iis-6

我无法想象我的生活。我正在尝试使用以下行获取当前用户登录到Windows的名称:

string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();

当我通过IIS发布并打开它后运行此行时,它给我一个名称“IIS APPPOOL / SiteName”。但是,当我通过Visual Studio 2013调试器运行时,会显示正确的名称。

5 个答案:

答案 0 :(得分:4)

您必须在ASP.NET站点上启用Windows auth / impersonation,否则它将在为应用程序池配置的任何帐户的上下文中运行。

https://msdn.microsoft.com/en-us/library/ff647405.aspx

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

答案 1 :(得分:3)

基于我在IIS下进行测试,只有Windows身份验证启用而不是模拟web.config; System.Web.HttpContext.Current.User.Identity.Name;向我返回当前登录用户而不是应用程序池用户,System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString()返回应用程序池用户。

希望这有帮助!

答案 2 :(得分:2)

我已经摆弄了配置,IIS设置和字符串...但我认为这条线是我需要使用的:

string user = System.Web.HttpContext.Current.User.Identity.Name;

似乎要返回我可以使用的域/用户名。看起来像是另一种解决方案。

答案 3 :(得分:0)

其他答案中提到的都是真的,加上:

在IIS管理器中,单击“基本设置”。

在“编辑应用程序”窗口中,单击“连接为...”

选择应用程序用户(通过身份验证)。不要使用特定用户,因为这将是检测到的身份。

答案 4 :(得分:0)

尝试一下

(((((System.Web.Security.RolePrincipal)(ClaimsPrincipal.Current))。Identity)。名称