iT邦幫忙

1

ASP.NET Core (MVC) C# Oracle 連線問題

  • 分享至 

  • xImage

各位科技業的大神前輩好
最近本人在學習如何用 ASP.NET Core (MVC) C# 來開發網頁系統
但是在連線至公司端的Oracle 資料庫時,一直看到
ORA-28040 The database does not accept your client's authentication protocol; login denied
這樣的一段錯誤
因此,我有嘗試裝不同的
Oracle.ManagedDataAccess 和 Oracle.ManagedDataAccess.Core 版本,並且在Program.cs 中也有對應的程式碼等等
感覺上沒有太大的問題,畢竟有顯示
The database does not accept your client's authentication protocol; login denied

後來爬文有看到要在Oracle底下的某一個文件加入這兩段

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8

再來也有至Oracle 官方網站看到這一類的解答,提到的解法好像也是差不多這樣

但目前還是沒有辦法連線... 在 appsettings.json 文件連線的Url 應該也沒有太大的問題?

"ConnectionStrings": {
  "OracleDbConnection": "User Id=myUsername;Password=myPassword;Data Source=myDataSource"
}

我是按照這樣的格式來寫
oracle 資料庫的版本是 11g

不知是否有大神知道如何解決這個連線的問題?
目前該試的真的都嘗試了......

20240808更新:
目前透過回答處,尼克大大的方法,經過小小的調整後可以連線公司的oracle資料庫,但另一個問題發生了...
只有寫死的SQL才能撈出資料...
例如:`string sql ="Select ID from table where name='小明'"
這樣子才可以...
如果我想要帶入自己的參數的話就不行...

例如:
string sql ="Select ID from table where name=':p1'
然後 p1 的值一樣是小明

有考慮過是否有空白或編碼一些問題,因此也有透過 trim() 來調整
但目前還是沒撈出資料,重點是不僅沒有報錯,還顯示 0 筆資料...
直接把我搞迷糊了...
不知有沒有大神碰過類似的情況?

20240809更新:
結果是公司資料表的 name 這個的資料欄位的問題...
只要string sql ="Select ID from table where TRIM(name)=':p1'
就可以撈出資料了...

kawa0710 iT邦研究生 5 級 ‧ 2024-08-07 08:59:34 檢舉
2010年前後的經驗供參考...

1. Oracle.ManagedDataAccess或Core裝錯版了, 不是11g可以用的...
11g是很舊的版本, 官網直接下載的可能不支援...

2. Oracle.ManagedDataAccess有分x32和x64版本, 如果裝錯有可能.net執行時會挑錯

3. 檢查環境變數是不是有少什麼...用以前可以用的電腦和現在用的電腦比對
這次的問題不確定是否和 x64 版本有關 (不過oracle 很舊,應該還是有關啦xD),不過在「方案平台」的部分我確實改選成x64 來執行,然後在 appsettings.json 裡 我的連線改成
DATA SOURCE=資料庫名稱;TNS_ADMIN=tnsnames.ora 這一個文件所在的位址上層的admin;USER ID=帳號;Password=密碼;
這樣就可以成功運作了,但是只有寫死的sql可以撈出資料,參數的沒辦法
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
尼克
iT邦大師 1 級 ‧ 2024-08-07 13:07:57
最佳解答

感謝IT大師前輩的文章!
如有問題,還請不吝指教~

尼克 iT邦大師 1 級 ‧ 2024-08-07 17:12:59 檢舉

Oracle client 安裝及使用就是很不友善。

感謝大師前輩,目前連線這部分的問題暫時解決!

1
kawa0710
iT邦研究生 5 級 ‧ 2024-08-07 09:04:18

Oracle這一頁下載11版專用的ODAC試看看,32和64位元要選對。

如果電腦已裝了其它版本的ODAC建議全部移除減少問題。

感謝您提供的解法,我都會嘗試看看!

1
jack8900
iT邦新手 2 級 ‧ 2024-08-07 11:25:21

Oracle.ManagedDataAccess.Core 3.21.150

NET Core改裝這個版本,要找3.多版本,不要裝23版本之後的

下面的連結是相關的災情
Oracle論壇
Github

感謝您提供的解法,我都會嘗試看看!

我要發表回答

立即登入回答