我正在使用ASP.NET MVC 4和Windows身份验证 . 当我使用VisualStudio时,一切正常,但是当我部署我的网站时,会抛出异常 .
var emailAddress = UserPrincipal.Current.EmailAddress;
throws:
无法将类型为“System.DirectoryServices.AccountManagement.GroupPrincipal”的对象强制转换为“System.DirectoryServices.AccountManagement.UserPrincipal” .
其余的工作正常 . 用户可以进行身份验证,我可以获取用户名等 .
编辑:
我在IIS上启用了Impersonation . 现在我得到以下异常:
[DirectoryServicesCOMException(0x80072020):发生操作错误 . ] System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)781 System.DirectoryServices.DirectoryEntry.Bind()44 System.DirectoryServices.DirectoryEntry.get_AdsObject()42 System.DirectoryServices.PropertyValueCollection.PopulateList()29 System.DirectoryServices.PropertyValueCollection .. ctor(DirectoryEntry entry,String propertyName)119 System.DirectoryServices.PropertyCollection.get_Item(String propertyName)163 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer()535649 System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()51 System.DirectoryServices.AccountManagement .PrincipalContext.Initialize()141 System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()42 System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context,Type principalType,Nullable`1 identityType,String identityValue,DateTime refDate)27 System.DirectoryServices . 帐户Management.Principal.FindByIdentityWithType(PrincipalContext context,Type principalType,IdentityType identityType,String identityValue)146 System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context,IdentityType identityType,String identityValue)44 System.DirectoryServices.AccountManagement.UserPrincipal.get_Current() 390 Jericho.MVC.HtmlHelperExtensions.GetUser(HtmlHelper htmlHelper)在C:\ Development \ Jericho \ Jericho.MVC \ HtmlHelperExtensions.cs:48
我能做什么?
1 回答
将 IIS Application Pool Identity 设置为 NetworkService 并使用: