获取当前Windows用户返回"IIS APPPOOL/Sitename"的名称

LOL*_*NO. 7 asp.net iis-6

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

string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
Run Code Online (Sandbox Code Playgroud)

当我通过IIS发布并打开它后运行此行时,它给我一个名称"IIS APPPOOL/SiteName".但是,当我通过Visual Studio 2013调试程序运行它时,会出现正确的名称.

LOL*_*NO. 5

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

string user = System.Web.HttpContext.Current.User.Identity.Name;
Run Code Online (Sandbox Code Playgroud)

似乎正在返回一个我可以使用的域/用户名。看起来像是一个替代解决方案。

  • 这适用于 IISExpress,但可能不适用于 IIS,因为它会返回运行 appool 的名称。 (5认同)

小智 4

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

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

 <system.web>
    ...
    <authentication mode="Windows"/>
    <identity impersonate="true"/>
    ...
 </system.web>
Run Code Online (Sandbox Code Playgroud)

  • 我已经这样做了,但是当我重新加载页面时,我收到 HTTP 错误 500.24。此外,当我检查站点的 IIS 身份验证设置时,它显示当我将 Web.config 更改为匿名身份验证和 ASP.NET 身份验证时,会自动启用匿名身份验证和 ASP.NET 身份验证。当我禁用 ASP.NET 身份验证并在那里启用 Windows 身份验证时,我仍然收到相同的错误。 (5认同)