我有一个使用模块A(.net程序集)的应用程序,模块A使用模块B(.net程序集),模块B使用模块C(C ++)。
由于服务器中的许多应用程序都使用此功能,因此我已将托管模块注册到注册表并将其安装在GAC中。
现在我通过以下代码访问模块A(完成所有工作):
输入moduleAType = Type.GetTypeFromProgID(“ModuleA.Class1”); object class1Object = Activator.CreateInstance(moduleAType);
以上两行代码在作为控制台应用程序运行时工作正常。但是当我将其部署为WCF服务并发出请求时,相同的代码会引发错误:
“无法加载程序集ModuleB或其依赖项之一”。
要尝试在WCF服务中修复上述错误,我将所有dll ModuleA,ModuleB和ModuleC复制到我的服务安装文件夹的bin中,现在我在浏览服务时遇到同样的错误。我想有些系统模块在作为WCF服务运行时没有被选中。
我尝试使用ProcMon来查看Asp.Net从哪里拿起dll,但我无法弄明白。任何建议/帮助都会非常有帮助
注意:Console App和WCF服务在同一台计算机上的同一用户下运行。
答案 0 :(得分:0)
我以某种方式为我做了这项工作。希望通过分享来帮助他人。
我做了一些日志记录,发现我服务的运行目录是c:\ windows \ system32 \ inetsrv,在依赖walker中我发现我的ModuleB所依赖的大多数dll(系统特定的)都在c:\ windows \ SYSTEM32。
所以我在inetsrv(c:\ windows \ system32 \ inetsrv)中创建了system32(c:\ windows \ system32)文件夹的快捷方式,它开始为我工作。