Unable to load DLL 'OraOps10.dll': Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
搞了一下午, 終於發現找出解決方式, 供大家參考:
首先關於調用Oracle Connection, 在asp.net 端測試都沒有問題, 但是佈署到 IIS 發生問題,
錯誤訊息: Unable to load DLL 'OraOps10.dll': Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
因為筆者需要特別呼叫 Oracle 類別, 所以不考慮用元件(Sql完成)
OracleConnection connOracle = new OracleConnection("Data Source = XXXXX; User ID = XXXX; Password = XXXXXX;"); connOracle1.Open();
OracleCommand cmdOracle = new OracleCommand(sql, connOracle1); OracleDataReader readerOracle = cmdOracle.ExecuteReader();
另外, 也不用太在乎是否該網站已經 include 該 Oracle 的 dll, 因為其實當你加入參考的時候, 程式就已經自動為你在 web.config 內加入該 dll
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Oracle.DataAccess, Version=10.1.0.200, Culture=neutral, PublicKeyToken=89B483F429C47342"/> </assemblies></compilation>
解決這個問題方式很簡單,
1. 改用 DSN 先將 Oracle 的連線做好, 然後呼叫這個DSN
2. 或是, 把 c:\Oracle\product\10.1.1.0\Client_1 這個目錄的權限打開, 加入 IUSR 和 ASPNET 的帳號, 就給他 full 的權限吧 (當然要先灌好 Oracle Client 才行)
這樣就解決了 ^^