ログインしたユーザー名を取得するのは簡単だと思いました。実際、スタックオーバーフローで利用可能なほとんどの応答で問題なく動作しますが、Web サイトを公開すると、すべての方法が失敗します。次の条件で、Windows からログインしているユーザーの名前を取得する方法を教えてください。
ログインしたユーザー名が必要なだけなので、応答を書くときは AD のことは忘れてください。
ユーザーが会社の一部ではなく、イントラネット Web サイトにアクセスできるゲスト ユーザーである可能性があるため、Windows 認証モードに変更できません
- ユーザーが 6000 人を超えているため、ユーザーのブラウザー設定を変更することはできません。
誰でもサイトを利用できるようにしたいので、匿名認証を無効にすることはできません。
私はすでに次の解決策を試しましたが、Web サイトをデバッグ モードで実行するとすべて正常に動作しますが、IIS で Web サイトを公開するとすべてがユーザー名を返さないので、新しい解決策を教えてください。
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"]