System.DirectoryServices中的间歇性异常

时间:2012-02-23 09:33:14

标签: .net exception-handling active-directory directoryservices

我有一个奇怪的System.DirectoryServices问题,它会间歇性地弹出。

以下例外会在以下代码中定期抛出

    private PrincipalSearchResult<Principal> GetAuthorizationGroups(UserPrincipal userPrincipal, int tries)
    {
        try
        {
            //Exception is thrown on this line below
            return userPrincipal.GetAuthorizationGroups();
        }
        catch (AppDomainUnloadedException ex)
        {
            if (tries > 5)
            {
               throw;
            }
            tries += 1;
            Thread.Sleep(5000);
            return GetAuthorizationGroups(userPrincipal, tries);
        }
        catch (Exception ex)
        {
            throw;
        }
    }
在System.Reflection.RuntimeAssembly.LoadWithPartialNameInternal(AssemblyName an)的System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&amp; stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)中的异常Stacktrace ,System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDomainInfo()位于系统的System.DirectoryServices.AccountManagement.ADStoreCtx.get_DnsDomainName()处的System.DirectoryServices.AccountManagement.UnsafeNativeMethods.IADsPathname.Retrieve(Int32 lnFormatType)处的System.Directount,StackCrawlMark&amp; stackMark。 System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper()

中的.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p)

Exception.Message也是非常奇怪的是: 无法加载文件或程序集“MyCustomAssembly.XmlSerializers”或其依赖项之一。系统找不到指定的文件

有趣的是,在此程序集中甚至没有引用MyCustomAssembly。

我认为Exception.Message与Debug信息不匹配,实际的Stacktrace或多或少是正确的Exception。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

我知道你很久以前问了这个问题,但我自己就遇到了这个问题并通过我的构建配置管理器解决了这个问题并确保所有项目都针对相同的CPU - 我有2个构建到“任何CPU”和一个面向x86的Windows Forms测试应用程序。我将其更改为任何CPU,问题就消失了。

here

获得提示

答案 1 :(得分:0)

当我们将服务器升级到.NET 4.5框架(我们遇到FileNotFoundExceptionNotSupportedException)时,最近发生了这种情况。我们的解决方案定位于.NET 4,因此我认为.NET 4.5尝试运行.NET 4应用并连接到Active Directory时可能存在一些向后兼容性问题。

将解决方案切换到目标4.5并重新发布到服务器似乎可以解决问题。

以下是如何实现这一目标。

确保解决方案中的所有项目都定位4.5

右键点击您的项目 - &gt; Properties - &gt; Application Tab

enter image description here

同时确保IIS使用正确的框架版本(在发布时,它应该以4.0为目标。):