从.NET连接到Oracle 10g

时间:2010-03-19 03:24:09

标签: .net oracle

我正在尝试连接到位于某个IP地址的oracle服务器,但始终会收到错误

  

System.TypeInitializationException:   类型初始值设定项   'Oracle.DataAccess.Client.OracleConnection'   抛出一个例外。 --->   Oracle.DataAccess.Client.OracleException   提供商与之不兼容   Oracle客户端的版本   Oracle.DataAccess.Client.OracleInit.Initialize()   在   Oracle.DataAccess.Client.OracleConnection..cctor()   ---内部异常堆栈跟踪结束---在Oracle.DataAccess.Client.OracleConnection..ctor(String   connectionString)at   WebApplication1._Default.Page_Load(对象   发件人,EventArgs e)in   C:\ Users \ Sunil \ Documents \ Visual Studio   2008 \项目\ WebApplication1 \ WebApplication1 \ Default.aspx.cs:行   26

这是一个测试文件

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Oracle.DataAccess.Client;
namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try {
                string oradb = "Data Source=(DESCRIPTION=(ADDRESS_LIST="
                + "(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.11)(PORT=1523)))"
                + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
                + "User Id=<user id>;Password=<some password>;";

                OracleConnection conn = new OracleConnection(oradb); // C#
                conn.Open();

            }
            catch (Exception  ex){
                Label1.Text = ex.ToString();
            }

        }
    }
}

我已在 Windows Vista 下为ASP.NET安装了 oracle 10gR2客户端 oracle 10gR2提供程序。我错过了什么吗?

问题部分解决我在提供商

之后安装了oracle客户端

..但现在异常显示为

  

Oracle.DataAccess.Client.OracleException   在   Oracle.DataAccess.Client.OracleException.HandleErrorHelper(的Int32   errCode,OracleConnection conn,IntPtr   opsErrCtx,OpoSqlValCtx *   pOpoSqlValCtx,Object src,String   程序)at   Oracle.DataAccess.Client.OracleException.HandleError(的Int32   errCode,OracleConnection conn,IntPtr   opsErrCtx,Object src)at   Oracle.DataAccess.Client.OracleConnection.Open()   在   WebApplication1._Default.Page_Load(对象   发件人,EventArgs e)in   C:\ Users \ Sunil \ Documents \ Visual Studio   2008 \项目\ WebApplication1 \ WebApplication1 \ Default.aspx.cs:行   28

3 个答案:

答案 0 :(得分:2)

问题解决了... windows vista安全(?)问题我以管理员身份运行程序,一切正常

答案 1 :(得分:0)

看起来您的Oracle.DataAccess.dll版本与Oracle客户端安装不同步。例如,您可能正在使用最新版本的Oracle.DataAccess.dll,它需要Oracle 11客户端。

检查Oracle.DataAccess.dll的版本字符串。我相信Oracle 10 DLL版本为“10.x.y.z”,而Oracle 11 DLL的版本为“2.x.y.z”(是的,令人困惑)。

请注意,这是服务器版本控制问题 - 这个错误发生在OracleConnection类尝试初始化时,很久才会与服务器通信。

答案 2 :(得分:0)

您可以尝试查看ASP.NET是否具有Oracle文件夹的权限,这可能是您的情况的原因