[英]ASP.NET 4 App dll is shadow copied but bin dll is loaded instead
在大型asp.net 4应用程序中存在一个非常奇怪的问题。 IIS有时不是从卷影副本位置加载模块,而是从dll最初来自的bin目录加载。
有谁知道IIS模块加载的工作方式,这是正常现象还是错误?
这是导致我们的问题
笔记
几周前发现了此问题的根本原因,希望现在发布以帮助遭受类似问题的任何人。
在我们的一些开发人员经过一番努力之后,我们发现这是由于我们在扫描dll进行nhibernate配置时所造成的。
当我们从代码中显式加载dll时,我们滥用了Assembly
helper方法。 而不是使用Assembly.LoadFrom(assemblyPath)
而是使用Assembly.LoadFile(assemblyPath)
。 这些方法之间存在许多差异,此处相关的是LoadFile()
加载指定的文件,而LoadFrom()
将应用逻辑以从其他位置(如temp,cache或GAC LoadFrom()
查找程序集。 有关差异的更多详细信息,请参见此问题 。
无论如何,在更改了这一行代码之后,我们所有的问题都消失了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.