System.InvalidOperationException: 未在本地计算机上注册“OraOLEDB.Oracle”提供程序。 ---> System.Data.OleDb.OleDbException: 没有可用的错误信息: REGDB_E_CLASSNOTREG(0x80040154)。
--- --- ---
at System.Data.OleDb.OleDbConnection.CreateProviderError(Int32 hr)
at System.Data.OleDb.OleDbConnection.CreateProvider(OleDbConnectionString constr)
at System.Data.OleDb.OleDbConnection.Open()
at PDA_Service.GetData.UserLogin(String user_id, String password) in d:\pda\pda_service\getdata.asmx.cs:line 215 目前服务器环境为:ORACLE92+WINDOWS2003+IIS,
.NET版本为 1.1.4322.573。
经测试,是程序调用ORACLE的OLEDB出错。基本可以确定以下几点:
1。WEBSERVICE程序运行无误,调用的组件版本与.NET环境无冲突。
2。ORACLE客户端安装正确,并且包含了OLEDB组件。接口服务器修改了ORACLE_HOME环境变量并不影响使用。
3。ORACLE_HOME目录,E:\Oracle\Ora92, 对Authenticated Users、ASP.NET, IWAM_ and IUSR_ 帐户,都赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性。
--- --- ---
at System.Data.OleDb.OleDbConnection.CreateProviderError(Int32 hr)
at System.Data.OleDb.OleDbConnection.CreateProvider(OleDbConnectionString constr)
at System.Data.OleDb.OleDbConnection.Open()
at PDA_Service.GetData.UserLogin(String user_id, String password) in d:\pda\pda_service\getdata.asmx.cs:line 215 目前服务器环境为:ORACLE92+WINDOWS2003+IIS,
.NET版本为 1.1.4322.573。
经测试,是程序调用ORACLE的OLEDB出错。基本可以确定以下几点:
1。WEBSERVICE程序运行无误,调用的组件版本与.NET环境无冲突。
2。ORACLE客户端安装正确,并且包含了OLEDB组件。接口服务器修改了ORACLE_HOME环境变量并不影响使用。
3。ORACLE_HOME目录,E:\Oracle\Ora92, 对Authenticated Users、ASP.NET, IWAM_ and IUSR_ 帐户,都赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性。
{
static void Main()
{
// Create a new OracleConnectionStringBuilder and
// initialize it with a few name/value pairs.
OracleConnectionStringBuilder builder =
new OracleConnectionStringBuilder(GetConnectionString());
// Note that the input connection string used the
// Server key, but the new connection string uses
// the well-known Data Source key instead.
Console.WriteLine(builder.ConnectionString); // Pass the OracleConnectionStringBuilder an existing
// connection string, and you can retrieve and
// modify any of the elements.
builder.ConnectionString = "server=OracleDemo;user id=maryc;" +
"password=pass@word1"; // Now that the connection string has been parsed,
// you can work with individual items.
Console.WriteLine(builder.Password);
builder.Password = "newPassword";
builder.PersistSecurityInfo = true; // You can refer to connection keys using strings,
// as well. When you use this technique (the default
// Item property in Visual Basic, or the indexer in C#),
// you can specify any synonym for the connection string key
// name.
builder["Server"] = ".";
builder["Load Balance Timeout"] = 1000;
builder["Trusted_Connection"] = true;
Console.WriteLine(builder.ConnectionString); Console.WriteLine("Press Enter to finish.");
Console.ReadLine();
} private static string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file using the
// System.Configuration.ConfigurationSettings.AppSettings property.
return "Server=OracleDemo;Integrated Security=true";
}
}
你是说完全改变调用ORALCLE的方式?这样需要修改很多为什么不能调用OLEDB?
at System.Data.OracleClient.DBObjectPool.GetObject(Boolean& isInTransaction)
at System.Data.OracleClient.OracleConnectionPoolManager.GetPooledConnection(String encryptedConnectionString, OracleConnectionString options, Boolean& isInTransaction)
at System.Data.OracleClient.OracleConnection.OpenInternal(OracleConnectionString parsedConnectionString, Object transact)
at System.Data.OracleClient.OracleConnection.Open()
at WebService_test.Service1.GetDataSetData(String db_link, String Sql) in c:\inetpub\wwwroot\webservice_test\service1.asmx.cs:line 75
Net Manager→本地→概要文件→Oracle高级安全性→验证→去掉所选方法中的 "NTS" 就可以了.
Net Manager→本地→概要文件→Oracle高级安全性→验证→去掉所选方法中的 "NTS" 就可以了.这样做了之后还是不行!是不是 2003的缘故啊