【问题标题】:ASP.NET application throwing "unable to find assembly" error for NHibernateASP.NET 应用程序为 NHibernate 抛出“无法找到程序集”错误
【发布时间】:2011-04-08 19:34:56
【问题描述】:

首先让我说一下这个错误的奇怪之处在于应用程序正在运行,并且错误冒泡到事件日志中,但它是间歇性的。有时间隔2小时,有时几分钟,有时半小时。似乎没有直接与请求相关联(并且请求似乎并没有因此而失败,尽管现在几乎所有请求都应该命中 NHibernate)。

我已确保该 dll 位于 bin 中,它是畅通无阻的(如果其中任何一个都不是,我希望它总是会失败,而不仅仅是有时)。

对于应用程序,我使用的是 Nhibernate 2.1.2、castle activerecord 2、ASP.NET MVC 2,并且应用程序部署在 IIS 7.5 上,数据库使用 SQL Server 2005。我在 Stack 上看到了类似的错误,但那里没有答案,希望有人对此错误有所了解。

Message: Unable to find assembly 'NHibernate, Version=2.1.2.4000, Culture=neutral,    
PublicKeyToken=aa95f207798dfdb4'.

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.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
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.Runtime.Remoting.Channels.CrossAppDomainSerializer.DeserializeObject(MemoryStream stm)
at System.AppDomain.Deserialize(Byte[] blob)
at System.AppDomain.UnmarshalObject(Byte[] blob)

【问题讨论】:

  • 找不到哪个程序集?您能否提供堆栈跟踪或更详细的错误消息?
  • 休眠。我添加了堆栈跟踪。

标签: asp.net nhibernate debugging iis exception


【解决方案1】:

这是否也会在应用程序启动时发生,还是总是在应用程序启动后的某个时间发生?

检查Unhandled IIS Exception - How can I track it down(有一个非常相似的堆栈跟踪)导致http://unhandledexception.codeplex.com/sourcecontrol/latest

【讨论】:

  • 太棒了,谢谢。该错误绝对是(正如您所指出的)隐藏了一个不同的错误。在我的例子中,与我的 Session 对象的生命周期有关,但这里的关键是你需要使用类似 HTTP 模块的东西来挖掘真正的原因。
【解决方案2】:

我得到了类似的错误,发现真正的问题没有被报告。这里接受的答案特定于 ASP.NET(这很好,因为这是问题所在),但我遇到了 WPF 浏览器应用程序(没有 web.config 文件)的问题,我发现另一种方式来了解我真正的问题是什么。我想我应该发布它以防其他人发现它有帮助。

如果您在 Visual Studio 中调试时遇到这些问题,可以转到“调试”>“异常”并选择“抛出”复选框(我使用的是 VS 2008)。对我来说,这允许在 Visual Studio 而不是我的 Web 浏览器中报告错误,并提供更详细和准确的错误信息。

如果您这样做,请意识到其中一些异常可能以前已处理,但现在会因在这些点中断而中断您的工作流程。如果发生这种情况,您可以关闭不需要中断的异常。

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 2011-02-02
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多