c# - 在 C# 中获取系统登录用户名,该用户名也适用于 IIS

标签 c# iis iis-7 iis-6 windows-authentication

我认为获取登录用户名很简单,事实上,它可以很好地处理堆栈溢出上可用的大多数响应,但当我发布网站时,所有方法都会失败。 任何人都可以指导我从 Windows 获取具有以下条件的登录用户的名称。

  1. 我只需要登录用户名,因此在编写响应时请忘记 AD。

  2. 我无法更改为 Windows 身份验证模式,因为用户可能是不属于公司的访客用户,但仍可以访问我的 Intranet 网站

  3. 由于用户数量超过 6000,因此无法更改用户浏览器设置
  4. 我无法禁用匿名身份验证,因为我希望每个人都能够使用该网站

  5. 我已经尝试过以下解决方案,当我在 Debug模式下运行网站时,一切正常,但当我在 IIS 上发布网站时,一切都无法返回用户名,因此请帮助我提供一些新的解决方案

string _windowLogonUserName = System.Environment.UserName.ToString()

string _windowLogonUserName = 
    WindowsIdentity.GetCurrent().Name.Remove(0, _adDomainName.Length + 1)

string _windowLogonUserName = 
    System.Web.HttpContext.Current.User.Identity.Name.ToString(); 

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

AppDomain appDomain = Thread.GetDomain();
appDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
Logger.Write("username principal" + windowsPrincipal.Identity.Name);
Request.ServerVariables["LOGON_USER"]

最佳答案

听起来您正在 AD 域之外发布网站。如果服务器不在域中,它将无法验证(甚至接受)Windows 用户。基本答案是你无法获得它。

如果服务器是内部服务器(在域上),那么您可以在 IIS 中启用集成 Windows 身份验证。 Here's a reference .

关于c# - 在 C# 中获取系统登录用户名,该用户名也适用于 IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14072446/

相关文章:

windows - Powershell 更新 IIS 绑定(bind)

c# - 多选过滤 ASP.Net MVC 中的分页 View

c# - 有没有办法在 C# 中通过代码重用来实现多个属性?

C# 字节数组到 powershell

node.js - iisnode 托管的 Web 应用程序能否计算出托管它的虚拟路径?

mysql - IIS7 ASP经典Mysql和ODBC驱动问题

javascript - Wysihtml5 编辑器 - 字符数限制

javascript 函数在 localhost 上工作但在 iis 上不起作用

asp.net - 将 ASP.NET 5 远程发布到 IIS

c# - “Microsoft.ace.oledb.12.0”未读取服务器上 .xlsx 文件中的所有行 (IIS7)