[英]OracleConnection.Open() not working in ASP.NET
我有一個VC#應用程序試圖打開Oracle數據庫,但是當它調用OracleConnection.Open()時,它會拋出“嘗試讀取或寫入受保護的內存”。
這是錯誤的堆棧跟蹤:
Unhandled Exception: System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Oracle.DataAccess.Client.OpsCon.Open1(IntPtr& opsConCtx, IntPtr& opsErrCtx, OpoConValCtx* pOpoConValCtx, OpoConRefCtx& pOpoConRefCtx)
at Oracle.DataAccess.Client.OpsCon.Open(IntPtr& opsConCtx, IntPtr& opsErrCtx, OpoConValCtx* pOpoConValCtx, OpoConRefCtx& pOpoConRefCtx)
at Oracle.DataAccess.Client.ConnectionDispenser.CreateConnectionPool(OpoConCtx& opoConCtx)
at Oracle.DataAccess.Client.ConnectionDispenser.GetConnectionPool(OpoConCtx& opoConCtx, Boolean& bConObtained)
at Oracle.DataAccess.Client.ConnectionDispenser.Open(OpoConCtx opoConCtx, Int32 enlistAttrVal, Boolean& bGotEnlistedConnection)
at Oracle.DataAccess.Client.OracleConnectionOCP.Open(OracleConnection con)
at Oracle.DataAccess.Client.OracleConnection.Open()
at GenericOracleLogin.frmMain.btnLogin_Click(Object sender, EventArgs e)
in C:\VS\Workspaces\Visual Studio 2017\Projects\GenericOracleLogin\GenericOracleLogin\Form1.cs:line 56
這是C#代碼的相關部分:
OracleConnectionStringBuilder ConnString = new OracleConnectionStringBuilder();
ConnString.DataSource = txtDataSource.Text;
ConnString.UserID = txtUsername.Text;
ConnString.Password = txtPassword.Text;
String ConnectionString = ConnString.ToString();
Conn = new OracleConnection(ConnectionString);
Conn.Open();
在Conn.Open()處引發異常
我正在使用Oracle.DataAccess版本4.122.1.0; 它是在64位應用程序上運行的64位版本
需要注意的兩件事:
首先,這是在卸載Oracle之后再將其重新安裝到另一個目錄之后完成的。 我在任何GAC目錄中都找不到對“ oracle.dataaccess”的引用。 我也沒有在任何可讀的machine.config文件中看到任何BindingRedirects。
其次,當我使用Oracle.ManagedDataAccess代替Oracle.DataAccess時,代碼起作用了。
我認為問題是,它沒有使用我要使用的特定版本的Oracle.DataAccess.dll。 我該如何解決?
我發現,雖然我的主Oracle odp.net目錄具有我正在使用的Oracle.DataAccess.dll版本4.122.1.20161216,但我的Oracle Data Toold odp.net目錄卻具有版本4.122.1.20170524。 當我使用較新的版本時,該應用程序成功運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.