Невозможно найти сборку - невозможно отследить ошибку - PullRequest
6 голосов
/ 01 декабря 2011

У меня есть веб-сайт, который работает в IIS 7.0 в пуле приложений Integrated v4.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)
IЭтот сбой связан с созданием новых папок и новых файлов изображений в одной папке ресурсов, которая находится в той же папке, что и веб-сайт. Я знаю, что ASP.NET перезапускает пул приложений в случае удаления папки.Возможно ли, что что-то произошло из-за создания этой новой папки ресурсов и каким-то образом ASP.NET перезагружает сборки?

Маурисио Шеффер сказал: @Dorin: тогда настоящая проблема - круговая зависимость.Я рекомендую опубликовать новый вопрос об этом.

Я решил проблему с циклической зависимостью и продолжаю получать ту же ошибку в журналах событий Windows.

Сначала я получаю Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb'и затем веб-приложение перезапускается.

От 3 до 10 секунд, прежде чем я получаю исключение в журналах Windows, я обнаружил исключение в файлах журнала моего сайта, созданных структурой сущностей, потому что я пытался вставить элемент стот же первичный ключ, что и существующий.Исключение не было обработано в коде, но обработано asp.net из-за настроек CustomErrors

<customErrors mode="On" defaultRedirect="/Error.aspx" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="/Error.aspx"/>
</customErrors>

Может ли это быть как-то связано с ошибкой в ​​файлах журнала Windows ??

Ответы [ 3 ]

7 голосов
/ 09 декабря 2011

Я нашел это утверждение в сообщении в блоге, в котором помимо темы также говорится о , почему пул приложений может уменьшиться

"Необработанное исключение в потоке, не связанном с запросом, будет снять процесс. Это происходит, даже если у вас есть настройка обработчика через метод Application_Error. "

Для некоторых типов запросов я создаю 8 новых потоков из потоков запросов, чтобы сделать одновременный запрос к 8 различным ядрам моего SOLR. В одном из этих ядер я получил исключение, которое я не обработал в этой теме, и это привело меня к опубликованной проблеме.

Я надеюсь, что это поможет кому-то другому, если они столкнутся с подобной ошибкой. Большое спасибо, ребята, за помощь. Благодаря вашим ответам я улучшил свой код и обнаружил и исправил другие ошибки, не связанные с вопросом. Также я начал больше разбираться в том, как ASP.NET загружает сборку, что очень помогло.

0 голосов
/ 17 мая 2012

Вы не забыли добавить сборку в рабочий каталог своего приложения?

Она должна быть там, чтобы сериализатор мог найти ее и загрузить типы.

Просто скопируйтеэто вручную в проводнике или напишите какой-нибудь метод, который копирует файл в рабочий каталог.

0 голосов
/ 01 декабря 2011

где сборка была установлена?был в GAC или в папке bin?хостинг-провайдер изменил свои настройки?попробуйте установить пути поиска в файле конфигурации, где CLR ищет dll.

...