我的WCF服务使用第三方DLL。这个第三方DLL是一个com寄存器DLL没有问题。但是这个DLL使用了一个非托管的,不可注册的DLL,它必须在另一个DLL的本地执行路径中。问题是当我的WCF在IIS上启动它加载第三方DLL程序集但DLL无法找到他的DLL,因为它不在我的应用程序bin文件夹中。我手动将另一个DLL放在bin文件夹中,但执行路径不存在。该第三方DLL确实有公开其目录中文件的方法,但它没有看到该文件。
我知道问题是因为如果我复制粘贴方法在控制台应用程序中它运行完美但我必须将DLL的第三方DLL使用到我的BIN文件夹中以使其工作。调用DLL方法查看本地文件清楚地表明它使用我的应用程序执行路径。我没有必要这样做。如果我可以强制我的服务的执行路径总是在一个地方相同,我可以知道我会简单地将这些额外的DLL推入其中并忘记它。
任何人都知道如何实现这一目标?
答案 0 :(得分:0)
唯一的解决方案是创建一个控制台应用程序。将其安装在除Web服务之外的服务器上。硬编码控制台可执行路径到Web服务并使Web服务启动控制台应用程序进程将参数传递给它然后等待进程退出。控制台应用程序关闭后,请阅读它创建的日志文件并提取结果。然后只需将结果返回给客户端。