Не удается найти сборку - невозможно отследить ошибку
-
27-10-2019 - |
Вопрос
У меня есть веб-сайт, который работает в IIS 7.0 в интегрированном пуле приложений версии 4.0.Начиная с сегодняшнего дня я получаю приведенное ниже исключение в журнале событий Windows.Веб-сайт находится в сети в течение 1 месяца, и я никогда раньше не получал этого исключения.Я получаю исключение в одни и те же минуты каждого часа, что немного странно.
Какая-то возможная причина:
У меня есть созданная мной библиотека, которую я загружаю динамически.
_searchProvider = (ISearchProvider)Activator.CreateInstance("SolrSearchProvider", "SearchProviders.SolrSearchProvider.SolrSearchProvider").Unwrap();
Эта библиотека имеет ссылку на SolrNet.
Есть ли у вас какие - либо идеи , в чем может заключаться проблема или как провести дополнительные исследования , чтобы найти решение ???
An unhandled exception occurred and the process was terminated.
Application ID: DefaultDomain
Process ID: 7192
Exception: System.Runtime.Serialization.SerializationException
Message: Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb'.
StackTrace: at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.AppDomain.Deserialize(Byte[] blob)
at System.AppDomain.UnmarshalObject(Byte[] blob)
Mauricio Scheffer said:@Дорин:тогда реальная проблема заключается в циклической зависимости.Я рекомендую опубликовать новый вопрос по этому поводу.
Я решил проблему с циклической зависимостью и продолжаю получать одну и ту же ошибку в журналах событий Windows.
Сначала я получаю Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb'
и затем веб-приложение перезапускается.
за 3-10 секунд до того, как я получу исключение в журналах Windows, я определил ожидание в файлах журнала моего сайта, созданных entity framework, потому что я пытался вставить элемент с тем же первичным ключом, что и существующий.Исключение не было обработано в коде, но было обработано asp.net из-за настроек customErrors
<customErrors mode="On" defaultRedirect="/Error.aspx" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/Error.aspx"/>
</customErrors>
Может ли это иметь какое - либо отношение к ошибке в файлах журнала Windows??
Решение
Я нашел это утверждение в сообщении в блоге, в котором, помимо темы, также говорится о почему пул приложений может выйти из строя
"Необработанное исключение в потоке, не связанном с запросом, приведет к остановке процесса.Это происходит, даже если у вас настроен обработчик с помощью метода Application_Error."
Для некоторых типов запросов я создаю 8 новых потоков из потоков запросов, чтобы выполнить одновременный запрос к 8 различным ядрам моего SOLR.В одном из этих ядер я получал исключение, которое я не обрабатывал в этом потоке, и это привело меня к опубликованной проблеме.
Я надеюсь, что это поможет кому-то еще, если они столкнутся с подобной ошибкой.Большое спасибо, ребята, за помощь.Благодаря вашим ответам я улучшил свой код и обнаружил и исправил другие ошибки, не связанные с вопросом.Также я начал больше разбираться в том, как ASP.NET загружает assembly, что очень помогло.
Другие советы
где была установлена сборка?был в GAC или в папке bin?изменил ли хостинг-провайдер свои настройки?попробуйте задать пути поиска в файле конфигурации , где CLR выполняет поиск dll.
Вы не забыли добавить сборку в рабочий каталог вашего приложения?
Он должен быть там, чтобы сериализатор мог найти его и загрузить типы.
Просто скопируйте его вручную в проводнике или напишите какой-нибудь метод, который копирует файл в рабочий каталог.