无法找到装配 - 跟踪错误是不可能的

Dor*_*rin 6 .net asp.net exception-handling .net-assembly solrnet

我有一个在集成v4.0应用程序池中的IIS 7.0中运行的网站.从今天开始,我在Windows事件日志中得到以下异常.该网站在线1个月,之前我从未遇到此例外.我在每小时的同一分钟得到例外,这有点奇怪.

一些可能的原因:

我有一个我创建的库,我动态加载.

 _searchProvider = (ISearchProvider)Activator.CreateInstance("SolrSearchProvider", "SearchProviders.SolrSearchProvider.SolrSearchProvider").Unwrap();
Run Code Online (Sandbox Code Playgroud)

该库提到了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)
Run Code Online (Sandbox Code Playgroud) 我将此故障与一个资源文件夹中的新文件夹和新图像文件的大量创建相关联,该文件夹位于与网站相同的文件夹中. 我知道ASP.NET会在删除文件夹时重新启动应用程序池.是否有可能因为创建了这个新资源文件夹而发生了某些事情,并且ASP.NET重新加载了程序集?

Mauricio Scheffer说:@Dorin:那么真正的问题是循环依赖.我建议发布一个关于它的新问题.

我解决了循环依赖的问题,我在Windows事件日志中不断收到相同的错误.

首先,我得到Unable to find assembly 'SolrNet, Version=0.4.0.1001, Culture=neutral, PublicKeyToken=bc21753e8aa334cb',然后Web应用程序重新启动.

在我在Windows日志中获得异常之前3到10秒,我确定了实体框架抛出的我的站点日志文件中的一个expcetion,因为我试图插入一个与现有项目具有相同主键的项目.该异常未在代码中处理,但由于CustomErrors设置而被asp.net处理

<customErrors mode="On" defaultRedirect="/Error.aspx" redirectMode="ResponseRewrite">
    <error statusCode="404" redirect="/Error.aspx"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

这可能与Windows日志文件中的错误有关吗?

Dor*_*rin 7

我在博客文章中发现了这个声明,除了主题之外,还说明了为什么应用程序池可能会崩溃

"与请求无关的线程中的未处理异常将取消该过程.即使您通过Application_Error方法设置了处理程序,也会发生这种情况."

对于某些类型的请求,我从请求线程创建了8个新线程,以便同时查询我的SOLR的8个不同内核.在其中一个核心中,我得到了一个异常,我没有在该线程中处理,这让我陷入了已发布的问题.

我希望如果他们遇到类似的错误,这可以帮助其他人.非常感谢你们的帮助.由于你的答案我改进了我的代码,我发现并修复了与问题无关的其他错误.此外,我开始更多地了解ASP.NET如何加载程序集,这是一个很大的帮助.