我认为获取登录用户名很简单,事实上,它在堆栈溢出时可用的大部分响应都能正常工作,但是当我发布网站时,所有方法都失败了。 任何人都可以指导我从Windows获取登录用户的名称,条件如下。
我只需要登录用户名,所以在编写回复时请忘记AD。
我无法更改为Windows身份验证模式,因为用户可能是不属于公司但仍可访问我的Intranet网站的访客用户
我无法禁用匿名身份验证,因为我希望每个人都能够使用该网站
我已经尝试过以下解决方案,当我在调试模式下运行网站时所有工作正常但是当我在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"]
答案 0 :(得分:2)
听起来您正在AD网域之外发布网站。如果服务器不在域上,它将无法验证(甚至接受)Windows用户。基本的答案是你无法得到它。
如果服务器是内部的(在域上),那么您可以在IIS中启用集成的Windows身份验证。 Here's a reference