IIS加载传统ISAPI扩展和IIS模块,两者都使用具有相同名称的DLL,但这些DLL不同(与不同版本的第三方链接)。到目前为止,应该没有问题,每个组件(扩展和模块)驻留在它们自己的文件夹中,每个组件都有自己的DLL版本,但是当IIS启动工作进程和扩展并且模块被加载时,扩展会尝试加载来自模块文件夹的DLL。我检查了模块的代码,发现使用影响整个过程的SetDllDirectory。瞧,这是问题,我说。在摆脱这个调用之后(用LoadLibraryEx替换符合我需要的DLL搜索标志),问题依然存在。最后,我发现自己给这两个DLL提供了独特的名字,显然(或不)解决了这个问题。但它不是干净优雅的解决方案。有没有人有任何想法为什么IIS展示这样一个奇怪的行为?ISAPI扩展加载错误的DLL
运行Win2008,IIS7.5,ISAPI扩展 - 与.NET3.5第三方程序集链接的本机,C++,VC2010,IIS模块 - 本地,C++,VS2010,上述有问题的DLL-C++/CLI。 一切都是64
好的,官方的MSDev响应:“在同一个进程中,你不能有两个同名的”经典“DLL,除非它们被设计为支持SxS” – kreuzerkrieg 2012-07-17 07:50:37