Environment.UserName返回应用程序池名称而不是用户名

7
以下行
Environment.UserName

在 Visual Studio 的调试模式下,会返回我需要的用户标识。但是当我在 IIS 上设置网站并运行代码时,同一行代码会返回网站使用的应用程序池名称。如何使其仍然返回用户名称?
4个回答

5
尝试这样做: ```HTML

尝试这样做:

```
if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
   string username = System.Web.HttpContext.Current.User.Identity.Name;
}

重要提示:您需要配置IIS以启用集成安全性并禁用匿名登录。

请注意,Environment.Username返回当前线程上的用户名。


目前该应用程序没有登录功能,只是为本地网络用户提供的一些东西。我只是想能够捕获用户身份。 - StevieB
1
这应该可以使用Windows身份验证。在这里看一下:http://msdn.microsoft.com/zh-cn/library/system.web.httpcontext.user(v=vs.110).aspx - Matt Wilko
好的,现在它没有进入if循环,因为基本上没有设置身份验证。我如何在应用程序上设置Windows身份验证? - StevieB
配置IIS以启用集成安全。 - Matt Wilko

2

Environment.UserName 返回启动当前线程的用户名称,但 Environment.GetEnvironmentVariable("USERNAME") 返回登录用户名。 - Shaik Dada Basha
我做了很多研究,最终这个方法对我起作用了。 - Shaik Dada Basha

2

尝试使用

Request.ServerVariables["LOGON_USER"]

它将返回DOMAIN\USERNAME。然后您可以对其进行拆分等操作。

1
在IIS中,针对您的应用程序,请启用ASP.NET模拟。 输入图像描述

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接