我在ASP.NET中有以下代码示例:
using (PrincipalContext domainContext = new PrincipalContext(ContextType.Domain))
{
using (UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, HttpContext.Current.User.Identity.Name))
{
if (user == null)
{
lbName.Text = "No User Principal";
}
else
{
lbName.Text = user.DisplayName;
}
}
}
web.config看起来像这样:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
我在我的本地开发机上测试了这段代码(是域的一部分,以域用户身份登录,使用VS2010、.NET 4.0、Windows XP),进行了本地测试,我能够获取UserPrincipal
对象。
如果我部署到运行在Network Service下的IIS6、.NET 4.0的WIndows 2003上(也是域的一部分),我关闭了匿名访问。但是这段代码不能得到UserPrincipal
对象。
我需要改变应用程序池以便使用域账户来获得UserPrincipal
吗?