2

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

  1. 我只需要登录用户名,所以在你写回复时忘记 AD。

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

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

  5. 我已经尝试过以下解决方案,当我在调试模式下运行网站时一切正常,但是当我在 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"]
4

1 回答 1

2

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

如果服务器是内部的(在域上),那么您可以在 IIS 中启用集成的 Windows 身份验证。这是一个参考

于 2012-12-28T16:21:25.600 回答