C#:。Net:用于控制台应用程序的代码。在WCF服务上运行时,相同的代码失败

时间:2017-01-19 03:15:07

标签: c# .net wcf

我有一个使用模块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服务在同一台计算机上的同一用户下运行。

1 个答案:

答案 0 :(得分:0)

我以某种方式为我做了这项工作。希望通过分享来帮助他人。

我做了一些日志记录,发现我服务的运行目录是c:\ windows \ system32 \ inetsrv,在依赖walker中我发现我的ModuleB所依赖的大多数dll(系统特定的)都在c:\ windows \ SYSTEM32。

所以我在inetsrv(c:\ windows \ system32 \ inetsrv)中创建了system32(c:\ windows \ system32)文件夹的快捷方式,它开始为我工作。