【发布时间】:2009-06-05 04:01:43
【问题描述】:
我正在维护一个使用远程处理调用远程服务器对象来订购信用报告的 asp.net Web 应用程序。调用“在我的机器上运行”,但在从生产服务器(运行 64 位版本的 .net 框架)运行时抛出异常“无法加载文件或程序集‘choicepointClue’”。
我通过将choicepointClue.dll 复制到Web 应用程序的bin 目录解决了这个问题。但我不明白为什么它需要在那里,因为它是远程服务器库而不是客户端的依赖项。
依赖树如下所示:
Web 应用程序 -->choicepointClueClient -->choicepointRemoteAgent -->choicepointClue
choicepointRemoteAgent 库中没有为类定义接口(应该有),所以它被choicepointClueClient 直接引用。
使用 Activator.GetObject() 实例化来自choicepointRemoteAgent 的类。正是在这一点上,我希望choicepointClue.dll 加载到远程服务器上,而不是运行时尝试从Web 应用程序的bin 目录加载它。
我脑海中闪过的一个古怪理论是,在 x64 和 x86 上加载程序集的方式是不同的。
所以在 x64 上它会在加载choicepointRemoteAgent 后立即尝试加载choicepointClue,而在 x86 上它在显式调用之前不会尝试加载 chiocepointClue?
显然我不知道这里发生了什么。任何人都可以对此有所了解吗?
【问题讨论】:
标签: .net dependencies remoting 64-bit