WindowsIdentity和Classic .Net应用程序池

我有一个ASP.NET网站,要求我的App Pool是Classic .Net App Pool。 该站点在IIS 7上的.NET 3.5上运行。当我尝试获取登录用户的Active Directory用户名时:

System.Security.Principal.WindowsIdentity.GetCurrent().Name 

我得到以下内容:

 IIS APPPOOL\\Classic .NET AppPool 

但是当我将应用程序池设置为.net 4.0时,它会返回登录的用户名(这就是我想要的)。 我错过了一个设置吗?

首先将这些行放在web.config配置部分:

      

第二步到IIS管理器打开您的Web应用程序属性并检查以下身份validation设置:

匿名身份validation=已禁用,ASP.NET模拟=已启用(这不是必需的),Windows身份validation=已启用

此设置将为您提供Active Directory用户并模拟它。

如果使用相同的代码并且它在一个应用程序池中工作而不在另一个应用程序池中,我将检查应用程序池的设置。 查找Identity属性。 我想,在.NET 4.0池下,你将拥有ApplicationPoolIdentity,在3.5下,你有一个硬编码帐户。

编辑

所以听起来你并没有真正获得用户凭据。 当然,当您在本地运行时,您将获得域帐户….此过程在您的凭据下运行。 但是,当您在另一台计算机上运行时,它将在处理请求的帐户的凭据下运行…直到您告诉它模拟用户为止。 即便如此,您可能必须为站点设置Windows身份validation以获取凭据或使用带有AD挂钩的表单身份validation来获取当前用户帐户下的所有内容。