【发布时间】:2012-09-20 16:02:53
【问题描述】:
我有一个 ASP.NET 网站,要求我的应用程序池是经典 .Net 应用程序池。该站点在 IIS 7 上的 .NET 3.5 上运行。当我尝试获取登录用户的 Active Directory 用户名时:
System.Security.Principal.WindowsIdentity.GetCurrent().Name
我得到以下信息:
IIS APPPOOL\\Classic .NET AppPool
但是,当我将应用程序池设置为 .net 4.0 时,它会返回登录的用户名(这是我想要的)。我错过了一个设置吗?
【问题讨论】:
-
您在代码中的哪个位置使用 ActiveDirectory 我在这里看不到任何地方表明您正在使用 AD.. 您熟悉 AD..吗?如果您使用的是网页,那么您返回的内容是正确的,那么 Page.User.Identity.Name.Split("\") 应该返回数组 pos 0 中的域和数组 pos 1 中的用户,所以我有点困惑你想做什么
-
这是一个内部站点。当用户请求页面时,我正在使用 System.Security.Principal.WindowsIdentity 检查他们的身份......当我调试(未附加到 IIS)时,我得到了预期的域/用户名,但是当我将 VS 2010 绑定到 IIS 时对于调试,它返回“IIS APPPOOL\\Classic .NET AppPool”
-
您是否尝试在 web.config 文件中明确设置
<identity impersonate="true" />?? -
是的——但这会模拟 IIS 中为网站设置的身份。这不会返回登录用户的身份。