簡體   English   中英

如何強制 ASP.NET Web 應用程序使用 BIN 文件夾中的 Oracle DLL?

[英]How to force an ASP.NET Web app to use Oracle DLLs in the BIN folder?

因此,由於某些語法更改,我有一個需要 Oracle 19c 客戶端 (4.122.19.1) 的 Web 應用程序,而我們的 Dev IIS 服務器有一個較舊的 4.121.2.0 客戶端。

無論如何,我將所有我聽說過的正確支持 dll 放在應用程序的 Bin 目錄中,從我所有的研究來看,這些是:oci.dll ociw32.dll Oracle.ManagedDataAccess.dll Oracle.Web.dll orannzsbb19 .dll oraocci19.dll oraocci19d.dll oraociei19.dll oraons.dll OraOps19.dll

這在我的 PC 上在 Visual Studio 中完美運行。 當我部署到 Dev IIS 服務器時(應用程序池在啟用 32 位中運行,因為我的 PC 以 32 位運行 IISExpress)有各種 Oracle 連接錯誤。

現在,在進程資源管理器中,在我的 PC 上,我查看了 IISExpress,我可以看到它加載了上述所有 dll,盡管是從 GAC 加載的,因為我在本地安裝了這個客戶端。 然而,在開發服務器 Process Explorer 上,在我的 W3WP.exe 進程下,我只看到 Oracle.ManagedDataAccess.dll 和 Oracle.Web.dll,但沒有一個支持 DLLS。 我相當確定缺少這些的事實,尤其是 OraOps19.dll,是問題所在。

我在 web.config 中使用了“DLLPath”,這沒什么區別。 我總是被告知 Asp.Net總是首先嘗試從 BIN 加載。 然而,在這里我相信它至少部分地忽略了它——無論是在我的 PC 中,它直接進入 GAC,還是來自 Dev IIS 服務器,它確實從 Bin 獲得了正確的 .Web 和 .ManagedDataAccess,但沒有別的。

我怎樣才能讓它忘記 Gac 並強制它在 Bin 中找到它需要的任何 Oracle 明智的東西? 謝謝

dll 被竊聽; 不允許像這樣發布對已簽名 dll 的重大更改。 解決方法:

假設這些是 100% il 代碼(不涉及 C++/clr)

  1. ildasm oracle dll 到 .il 和 .res 文件
  2. 刪除對公鑰的所有引用
  3. ilasm .il 和 .res 文件回到 dll
  4. 將您的應用程序與這些 dll 鏈接

現在它不再出現在 GAC 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM