我有一个过程,用户将文件上传到网站,然后处理文件并将其上传到数据库。验证文件的过程可能需要几分钟,因此只要文件上传,我就会创建一个新线程并在第二个线程上进行处理。这在我的本地计算机上运行良好,但在我的IIS 7测试服务器上根本不起作用。
经过一些调查我发现问题是该进程正在尝试加载对Castle的引用,但它无法找到DLL。我在我的bin中有一个Castle DLL的副本,它可以在我的应用程序的其他地方工作。我运行Fuslog并发现它正试图从错误的位置加载城堡。它试图从c:/ windows / system32 / inetsrv /.
加载似乎在IIS 7下,第二个线程正在不同的上下文中执行。
所以问题是如何让它在应用程序BIN文件夹中找到Castle?
答案 0 :(得分:0)
我对IIS不是很熟悉,但我的猜测是由于某种原因,工作目录已经改变了。 一种可能性是将工作目录更改回bin文件夹。 另一种可能性是订阅AppDomain.AssemblyResolve事件,该事件将在CLR无法加载程序集的任何时候被调用 - 在事件处理程序中,您可以从dll加载程序集并返回它。