Подключение к Oracle 10g из .NET - PullRequest
2 голосов
/ 19 марта 2010

Я пытаюсь подключиться к серверу оракула, расположенному на каком-то IP-адресе, но всегда получаю ошибку как

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) в WebApplication1._Default.Page_Load (Объект отправитель, EventArgs e) в C: \ Users \ Sunil \ Documents \ Visual Studio 2008 \ Projects \ 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();
            }

        }
    }
}

У меня установлен клиент Oracle 10gR2 и поставщик Oracle 10gR2 для ASP.NET под Windows Vista . Я что-то упустил?

Проблема Частично решена Я установил клиент Oracle после провайдера

.. но теперь исключение отображается как

Oracle.DataAccess.Client.OracleException в Oracle.DataAccess.Client.OracleException.HandleErrorHelper (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Object src, String процедура) в Oracle.DataAccess.Client.OracleException.HandleError (Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) в Oracle.DataAccess.Client.OracleConnection.Open () в WebApplication1._Default.Page_Load (Объект отправитель, EventArgs e) в C: \ Users \ Sunil \ Documents \ Visual Studio 2008 \ Projects \ WebApplication1 \ WebApplication1 \ Default.aspx.cs: линия 28

Ответы [ 3 ]

2 голосов
/ 23 марта 2010

Проблема решена ... Windows Vista Security (?) Была проблема Я запустил программу от имени администратора и все работало нормально

0 голосов
/ 19 марта 2010

Вы можете посмотреть, есть ли у ASP.NET разрешения на папку Oracle, что может быть причиной вашей ситуации

0 голосов
/ 19 марта 2010

Похоже, что ваша версия 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 пытается инициализировать себя задолго до того, как он начинает общаться с сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...