从.NET连接到Oracle 10g
我正在尝试连接到位于某个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(字符串 连接字符串)在 WebApplication1.\u默认值。页面\u加载(对象 发件人,事件参数(e)在 C:\Users\Sunil\Documents\Visual Studio 2008\Projects\WebApplication1\WebApplication1\Default.aspx.cs:line 二十六 这是一个测试文件从.NET连接到Oracle 10g,.net,oracle,.net,Oracle,我正在尝试连接到位于某个IP地址的oracle服务器,但始终收到错误消息 System.TypeInitializationException: 的类型初始值设定项 'Oracle.DataAccess.Client.OracleConnection' 引发了异常。--> Oracle.DataAccess.Client.OracleException 提供程序与不兼容 位于的Oracle客户端版本 Oracle.DataAccess.Client.OracleInit.Initialize()
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();
}
}
}
}
使用系统;
使用系统集合;
使用系统配置;
使用系统数据;
使用System.Linq;
使用System.Web;
使用System.Web.Security;
使用System.Web.UI;
使用System.Web.UI.HTMLControl;
使用System.Web.UI.WebControl;
使用System.Web.UI.WebControl.WebParts;
使用System.Xml.Linq;
使用Oracle.DataAccess.Client;
命名空间WebApplication1
{
公共部分类\u默认值:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
试一试{
string oradb=“数据源=(描述=(地址列表=”
+“(地址=(协议=TCP)(主机=192.168.1.11)(端口=1523))”
+“(连接数据=(服务器=专用)(服务名称=ORCL));”
+“用户Id=;密码=;”;
OracleConnection conn=新的OracleConnection(oradb);//C#
conn.Open();
}
捕获(例外情况除外){
Label1.Text=ex.ToString();
}
}
}
}
我已在Windows Vista下为ASP.NET安装了oracle 10gR2客户端和oracle 10gR2提供程序。我遗漏了什么吗
问题已部分解决我已在提供程序之后安装了oracle客户端
…但现在异常显示为
Oracle.DataAccess.Client.OracleException
在
Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32
错误代码,OracleConnection连接,IntPtr
opsErrCtx,OpoSqlValCtx*
pOpoSqlValCtx,对象src,字符串
程序)在
Oracle.DataAccess.Client.OracleException.HandleError(Int32
错误代码,OracleConnection连接,IntPtr
opsErrCtx,对象src)在
Oracle.DataAccess.Client.OracleConnection.Open()
在
WebApplication1.\u默认值。页面\u加载(对象
发件人,事件参数(e)在
C:\Users\Sunil\Documents\Visual Studio
2008\Projects\WebApplication1\WebApplication1\Default.aspx.cs:line
二十八
您的Oracle.DataAccess.dll版本似乎与Oracle客户端安装不同步。例如,您可能正在使用Oracle.DataAccess.dll的最新版本,该版本需要Oracle 11客户端 检查Oracle.DataAccess.dll的版本字符串。我相信Oracle10DLL的版本是“10.x.y.z”,而Oracle11DLL的版本是“2.x.y.z”(是的,这令人困惑)
请注意,这不是服务器版本控制问题--在OracleConnection类与服务器对话之前很久,OracleConnection类尝试初始化自身时就会发生此错误。您可以尝试查看ASP.NET是否对Oracle文件夹具有权限,这可能是导致您的情况的原因。问题已解决。。。windows vista安全性(?)是问题所在,我以管理员身份运行该程序,一切正常您的服务器上有什么oracle版本?我有一个与您极为相似的问题。如果你碰巧找到了解决办法,请告诉我。我在网上只发现了一些模糊的提示,提到权限可能是错误的,或者在某个地方丢失了,但我还没有弄清楚这是否真的是问题所在,或者缺少哪些权限以及权限在哪里missing@Bob:您是否在windows vista上。。以管理员身份运行程序。这为我解决了问题。@itowlson:谢谢。。实际上,我在安装客户端之后重新安装了提供程序:)。但现在它又出现了一个新的例外:(Oracle data access版本是10.2.0.100,但我现在遇到了新的异常,这在我修改的问题中提到了。啊,对不起,不确定是什么原因导致了这种情况,尽管至少现在DLL似乎加载正常,我们进入了连接问题的领域。你能确定任何类型的错误代码吗?它可能隐藏在属性中OracleException的s——在调试器中检查异常,看看是否有任何线索。