【问题标题】:iis7 hosted wcf service : avoid placing dll in system32 folderiis7 托管 wcf 服务:避免将 dll 放在 system32 文件夹中
【发布时间】:2012-03-20 18:47:44
【问题描述】:

我有一个引用 dll 的 wcf 服务。唯一可行的方法是将 dll 放在 %windir%/system32 文件夹中。

我尝试过的事情

  • 尝试在 iis express、开发服务器和 iis 之间切换(但这无关紧要)
  • 将 dll 放在 bin 文件夹和/或其他应用程序文件夹中
  • 尝试使用“regsvr32”实用程序,但 dll 不是 com dll,因此无法正常工作。(无 ddl 入口点)
  • 它不是一个 .NET dll,所以我认为 GAC 不能被操纵来使用它
  • 使用系统路径变量没有任何成功

我真正想要的
访问 dll 的更简单方法,因此我不必将 dll 放在 system32 中,而是将其包含在应用程序文件夹中并从那里访问它。

我错过了什么?


编辑: 我确实发现 this 的帖子很有趣且相似,但同样,它也使用了 system32 方法,这不是要走的路。

【问题讨论】:

    标签: c# asp.net wcf dllimport


    【解决方案1】:

    如果这是一个 win32 本机库,您可以使用 pinvoked LoadLibrary 从已知位置“预加载”它.

    当调用带有DllImport 修饰的库中的任何方法时,运行时将尝试加载库(并且会因为找不到 dll 而失败)但是由于您之前预加载了它,因此加载将成功(加载器检查库文件名,不关注加载库的目录)。

    【讨论】:

    • 不,它不是原生库,否则我不需要将它放在 system32 中,它已经在那里了
    • 对我来说,“本地”意味着不是 .NET 也不是 COM。
    • 哦,好的,我需要检查如何使用 LoadLibrary
    • 显然 LoadLibrary 不能开箱即用,但详细过程 here 很有帮助。必须定义使其工作的路径。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多