PrincipalOperationException 1355但WireShark表示成功

时间:2012-09-03 13:45:17

标签: c# directoryservices userprincipal

我有一个应用程序在应用程序域外执行UserPrincipal(和GroupPrincipalFindByIdentityWithType。这工作到上周。从那时起,我在我的开发机器上安装了Visual Studio 2012,我的代码停止使用PrincipalOperationException {“无法检索有关域的信息(1355)。”}。 Windows错误号是80131501

我不知道VS2012安装,某些安全更新和此错误的出现之间是否存在关联。

我在创建上下文时使用SimpleBind,并使用ADSIEdit中的相同设置来访问域仍然有效。

我在应用程序测试期间捕获了WireShark并且:TCP / LDAP包表明成功!我收到了LDAP搜索结果包,可以看到它的内容在wireshark中是正确的。您可以在wireshark中查看searchRequest和searchResponse - 请求的值是正确的,并使用正确的目录对象回答请求。在我收到错误之前有3或4个数据包我可以看到在我的客户端和2008R2服务器之间的ldap流量中有一个端口改变。客户端是Windows7(我没有防火墙,我尝试使用禁用的病毒扫描程序)。

我想以后可能会出现问题,当System.DirectoryServices.AccountManagement实例化UserPrincipal时(我试过这个,因为我怀疑我的一些UserPrincipalEx属性可能是异常的原因)。这个猜测是基于执行ldap查询并回答得很好的事实。

我知道如果您的客户端不信任该域,您就永远无法在DirectoryObject上执行MemberOf之类的方法。但UserPrincipal的简单实例化为我工作了几个月直到今天。

我在开发环境中使用hosts条目而不是DNS。它工作了几个月。服务器没有客户端的DNS知识,也没有。

对解决方案的任何暗示都会很棒!

主持条目:

192.168.19.101  mhvtest.loc #thats the domain (local vmware) entry
192.168.19.101  mhvdc1.mhvtest.loc #thats the domain controller entry
192.168.19.102  mhvex1.mhvtest.loc

Stacktrace是:

   at System.DirectoryServices.AccountManagement.Utils.GetDcName(String computerName, String domainName, String siteName, Int32 flags)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()
   at System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsDomainName()
   at System.DirectoryServices.AccountManagement.ADStoreCtx.GetAsPrincipal(Object storeObject, Object discriminant)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.FindPrincipalByIdentRefHelper(Type principalType, String urnScheme, String urnValue, DateTime referenceDate, Boolean useSidHistory)
   at System.DirectoryServices.AccountManagement.ADStoreCtx.FindPrincipalByIdentRef(Type principalType, String urnScheme, String urnValue, DateTime referenceDate)
   at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context, Type principalType, Nullable`1 identityType, String identityValue, DateTime refDate)
   at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext context, Type principalType, String identityValue)
   at System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, String identityValue)
   at Idda2.ActiveDirectory.UserPrincipalEx.FindByIdentity(PrincipalContext context, String identityValue) in D:\Users\vogt\Documents\src\idda2\trunk\Idda2.ActiveDirectory\UserPrincipalEx.cs:line 130

0 个答案:

没有答案