【问题标题】:Set location of DLLs to load in web.config在 web.config 中设置要加载的 DLL 的位置
【发布时间】:2011-08-12 12:59:39
【问题描述】:

是否可以在 web.config 中设置要加载的特定 DLL 的本地文件路径位置,而不是将这些 DLL 放在 GAC 或 C:\Windows\System32 中。

这将使 Web 服务的部署变得更加容易,而不必搞乱其中任何一个。

我已经尝试将 DLL 添加到项目中,但没有成功。它们是 4 个 oracle 即时客户端 DLL。

  • oci.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll

如果有人知道这样做的方法,那就太好了。

编辑: 请注意,DLL 是“强命名的”,因此我无法使用它们的公钥引用它们。

另外,由于添加失败,目前项目中没有直接引用它们。

【问题讨论】:

  • 有什么原因不能放到web服务的bin目录下?
  • @Oded - 将它们放在垃圾箱中似乎不起作用。这与 ASP.NET 使用的路径有关,因为它们没有被直接引用。

标签: asp.net oracle web-config gac


【解决方案1】:

您可以使用dependentAssembly 元素通过codeBase 元素指定dll 所在的位置。

但是,我认为这需要是一个有效的 URL。

来自MSDN的示例:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myAssembly"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0"
                             newVersion="2.0.0.0"/>
            <codeBase version="2.0.0.0"
                      href="http://www.litwareinc.com/myAssembly.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

【讨论】:

  • 这可以使用本地文件路径吗?还是我需要使用其他东西?
  • @tgandrews - 它必须是一个有效的 URL。可能能够使用本地的(可能使用file:/// 协议)。
【解决方案2】:

探测路径可让您指定应用程序应在何处查找程序集。这不会影响将内容放入 GAC,但为您提供了将所有内容存储在 bin 文件夹中的替代方法。

http://msdn.microsoft.com/en-us/library/823z9h8w.aspx

【讨论】:

  • 这是否适用于 ASP.NET,因为将 DLL 放入 bin 似乎不起作用。
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 2010-09-26
  • 2016-10-29
  • 2012-07-24
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
相关资源
最近更新 更多