電腦是win 10, 64位作業系統, 使用Visual Studio 2015 和 Visual Studio 2017打開MVC EF6專案運行.

取資料庫物件的資訊(如上圖,紅色標志處)
提示The underlying provider failed on Open
InnerException提示如下
ORA-12154: TNS:could not resolve the connect identifier specified
StackTrace詳細資訊提示如下
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c)
at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext)
at System.Data.Entity.Core.EntityClient.EntityConnection.<Open>b__2()
at System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute(Action operation)
at System.Data.Entity.Core.EntityClient.EntityConnection.Open()”
Source提示EntityFramework
嘗試過的解決方案:
(1)檢查web.config連接字串Connection String密碼和賬號等正確, 打包程式到其他同事的電腦運行專案是沒有問題的. 排除代碼和組態檔資訊錯誤和 oracle.manageddataaccess.client 版本不對應.
(2)使用同一臺電腦和同一個VS寫一個超級簡單的控制臺程式(期間考慮是Web Server在64位電腦差異, 也寫了一個WebSite), 代碼如下, 是可以正常輸出系統時間, 排除VS連接Oracle有問題.
[align=left] Oracle.ManagedDataAccess.Client.OracleConnection conn = new Oracle.ManagedDataAccess.Client.OracleConnection("Data Source = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 00.00.00.00)(PORT = 1555))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = 111111)));USER ID=222222;Password=123456");
conn.Open();
string s ;
using (conn)
{
Oracle.ManagedDataAccess.Client.OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "select sysdate from dual ";
s= cmd.ExecuteScalar().ToString();
}
Console.WriteLine(s);
Console.ReadLine();[/align]
(3) 有博主說是Oracle 11g在64位電腦不識別C:\Program Files (x86)這個括號, 要修改這個括號, 沒試過這個, 因為找不到博主的方法.
(4) 檢查防火墻, 在公司網域, 排除, 同一個專案代碼同事可以打開, 排除防火墻和驅動程式.
(5) PL/SQL Developer可以打開Oracle查詢....
哪位大神有思路提供一下嗎? 謝謝.
uj5u.com熱心網友回復:
錯誤提示很清晰:ORA-12154: TNS:could not resolve the connect identifier specified
注意:...TNS..,說的是TNS的問題,也就是TNS配置不對。所以,就是配置不對。這也能解釋,為什么別人行,你不行。因為別人的配置正常,你的配置有問題。
uj5u.com熱心網友回復:
TNS.ora檔案有拿同事的直接覆寫了, 而且PL/SQL Developer可以打開. 再幫忙看下?
uj5u.com熱心網友回復:
試試看https://blog.csdn.net/wm5920/article/details/7328410
uj5u.com熱心網友回復:
有設定了, 沒設定的話, 我本機的PL/SQL Developer 使用不了的.
現在是Visual Studio 打開專案運行連接不上Oracle.
uj5u.com熱心網友回復:
你同事的寫法可以不使用tnsname中的連接。查看你自己的連接串是啥樣的。如果跟你同事的格式不一樣,請檢查系統環境變數中的tns_admin 和oracle_home 。另外如果是IIS程式 請 使用命令列重啟IIS 否則 IIS不會自動讀取最新的環境變數。不清楚的地方請百度。祝好。uj5u.com熱心網友回復:
確定沒有組態檔字符錯誤?轉載請註明出處,本文鏈接:https://www.uj5u.com/net/56882.html
上一篇:UnityMVC 屬性注入問題
下一篇:wpf中binding問題
