代码之家  ›  专栏  ›  技术社区  ›  Franck

如何在IIS 7.0下指定WCF执行路径

  •  0
  • Franck  · 技术社区  · 10 年前

    我的WCF服务使用第三方DLL。这个第三方DLL是一个com寄存器DLL,没有问题。但此DLL使用了一个非托管的、不可注册的DLL,该DLL必须位于其他DLL的本地执行路径中。问题是,当我的WCF在IIS上启动时,它加载了第三方DLL程序集,但DLL找不到他的DLL,因为它不在我的应用程序bin文件夹中。我手动将另一个DLL放在bin文件夹中,但执行路径不在那里。第三方DLL确实有方法公开其目录中的文件,但它看不到该文件。

    我知道问题在于,如果我在控制台应用程序中复制粘贴该方法,它会运行得很完美,但我必须将第三方DLL使用的DLL放入我的BIN文件夹以使其正常工作。调用DLL方法查看本地文件清楚地表明它使用了我的应用程序执行路径。我不介意必须这样做。如果我可以强制我的服务的执行路径在一个我可以知道的地方保持不变,我会简单地将这些额外的DLL放入它们的DLL中,然后忘掉它。

    有人知道如何做到这一点吗?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Franck    10 年前

    唯一的解决方案是创建控制台应用程序。将其安装在web服务以外的服务器上。将控制台可执行路径硬编码到web服务中,并使web服务启动控制台应用程序进程,将参数传递给它,然后等待进程退出。一旦控制台应用程序关闭,请读取它创建的日志文件并提取结果。然后简单地将结果返回给客户端。