我在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,Windowx XP)来进行本地测试,我能够获得UserPrincipal
个对象。
如果我部署到WIndows 2003(也是域的一部分),IIS6,.Net 4.0,在网络服务下运行应用程序池,我关闭了匿名访问。但是代码无法获得UserPrincipal
对象。
我是否必须更改应用程序池才能在域帐户下运行才能获得UserPrincipal
?
答案 0 :(得分:7)
它在您的开发箱上而不是在您的产品盒上工作的原因是,在您的开发箱上,网站运行在您的网络ID下,该网络ID具有域名权限,但在生产中它运行在网络服务下,该网站服务没有您的权利域。你可以: