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_ 帐户,都赋予允许读、执行权限,并在“高级”中保证该目录的子目录、文件都继承这些属性。

解决方案 »

  1.   

    用System.Data.OracleClient,不要用OleDB
      

  2.   

    把在ASP.net里引用Oracle的那个DLL文件拷到web\Bin下。试试。
      

  3.   

    用System.Data.OracleClient,不要用OleDB是什么意思? 连接字符串该怎么写呢?
      

  4.   

    using System.Data.OracleClient;class Program
    {
      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";
      }
    }
      

  5.   

    forgot(忘记forgot2000) 
    你是说完全改变调用ORALCLE的方式?这样需要修改很多为什么不能调用OLEDB?
      

  6.   

    OLEDB是跟隨你的客戶端組件安裝的版本而不同,本身並不十分通用,而且還要安裝客戶端太麻煩了。.NET裡面直接有提供對Oracle數據訪問的Provider,為什麼要舍本逐末呢?
      

  7.   

    写了个用System.Data.OracleClient的测试程序,在服务器上运行,结果如下:System.DllNotFoundException: 无法加载 DLL (oci.dll)。
       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
      

  8.   

    开始 -> 程序 -> Oracle -> Configuration and Migration Tools -> 
    Net Manager→本地→概要文件→Oracle高级安全性→验证→去掉所选方法中的 "NTS" 就可以了.
      

  9.   

    开始 -> 程序 -> Oracle -> Configuration and Migration Tools -> 
    Net Manager→本地→概要文件→Oracle高级安全性→验证→去掉所选方法中的 "NTS" 就可以了.这样做了之后还是不行!是不是  2003的缘故啊
      

  10.   

    你添加System.Data.OracleClient.dll的引用了吗?
      

  11.   

    加入ASP。NET C#群吧,群号是:  1873156