Прерывистое исключение в System.DirectoryServices - PullRequest
4 голосов
/ 23 февраля 2012

У меня странная проблема 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;
        }
    }

Исключение Stacktrace в System.Reflection.RuntimeAssembly._nLoad (AssemblyName fileName, String codeBase, Свидетельство assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & ​​stackMark, логическое значение throwOnFileNotFound, логическое_имение_произведения_перемещения.грунтовое_обрабатывающее_применение Свидетельство securityEvidence, StackCrawlMark & ​​stackMark) в System.DirectoryServices.AccountManagement.UnsafeNativeMethods.IADsPathname.Retrieve (Int32 lnFormatType) в System.DirectoryServices.AccountManagement.ADStore.tchange.DirectoryDirect Services.AccessDirectoryConservice.AccessDirectoryDirect.dll .AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ (руководитель p) в System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper ()

Что-то очень странное - это Exception.Message, которое: Не удалось загрузить файл или сборку 'MyCustomAssembly.XmlSerializers' или одну из ее зависимостей. Система не может найти указанный файл

Самое смешное, что MyCustomAssembly даже не упоминается в этой сборке.

Я думаю, что Exception.Message не соответствует отладочной информации, и фактическая Stacktrace является более или менее правильным Exception.

Есть идеи, почему это происходит?

Ответы [ 2 ]

4 голосов
/ 30 октября 2012

Я знаю, что вы спрашивали об этом давным-давно, но я сам решил эту проблему и решил ее, пройдя через менеджер конфигурации сборки и убедившись, что все проекты были нацелены на один и тот же процессор - у меня было 2 здания с надписью "Любой процессор" и тестовое приложение Windows Forms для x86. Я изменил это на любой процессор, и проблема исчезла.

Получил совет от здесь

0 голосов
/ 22 мая 2013

Это недавно произошло с нами, когда мы обновили сервер до платформы .NET 4.5 (мы сталкивались с FileNotFoundException и NotSupportedException).Наше решение было нацелено на .NET 4, поэтому я считаю, что, возможно, возникнет некоторая проблема обратной совместимости, когда .NET 4.5 попытается запустить приложение .NET 4 и подключиться к Active Directory.

.повторная публикация на сервер, кажется, добилась цели.

Ниже описано, как этого добиться.

Убедитесь, что все проекты в вашем решении нацелены 4.5:

Щелкните правой кнопкой мыши наваш проект -> Properties -> Application Tab

enter image description here

Также убедитесь, что IIS использует правильную версию фреймворка (На момент публикации он должен быть нацелен на 4.0.):

...