2016-12-28 3 views
3

Ich versuche, das Befehls-Timeout für eine OracleCommand-Abfrage zu ändern, aber es funktioniert nicht, so dass keine Ausnahme für Zeitlimit ausgelöst wird.Oracle .net Provider CommandTimeout hat nicht funktioniert

  • verwendet Oracle.ManagedDataAccess.dll (4.121.2.0)

    using (OracleConnection _connection = new OracleConnection(connectionString)) 
    { 
    
        using(OracleCommand command = _connection.CreateCommand()) 
        { 
    
         command.CommandText = commandText; 
         command.CommandTimeout = 10; 
    
        _connection.Open(); 
         using(OracleDataReader reader = command.ExecuteReader()) 
         { 
          while (reader.Read()) 
          { 
           Console.WriteLine(reader.GetValue(0)); 
          } 
         } 
        } } 
    

Config:

<configSections> 
    <section name="entityFramework" 
     type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     requirePermission="false"/> 
    <section name="oracle.manageddataaccess.client" 
     type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> 
     <provider invariantName="Oracle.ManagedDataAccess.Client" 
     type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="Oracle.ManagedDataAccess.Client"/> 
     <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" 
     type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/> 
    </DbProviderFactories> 
    </system.data> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <publisherPolicy apply="no"/> 
     <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/> 
     <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <oracle.manageddataaccess.client> 
    <version number="*"> 
     <dataSources> 
     <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1561))(CONNECT_DATA=(SERVICE_NAME=xxxx))) "/> 
     </dataSources> 
    </version> 
    </oracle.manageddataaccess.client> 
    <connectionStrings> 
    <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=xxxx;Password=xxxx;Data Source=SampleDataSource"/> 
    </connectionStrings> 

Diese Abfrage laufen mehr als 10 Sekunden, aber keine Ausnahme gebrannt.

Antwort

1

Oracle .net Team mein Problem lösen :)

gesehen dieses Problem vor mit einigen Netzwerk-Konfiguration. Versuchen Sie es mit Disable_Oob = on. Weitere Informationen in README: http://www.oracle.com/technetwork/topics/dotnet/downloads/odpnet-managed-nuget-12102400-2718787.txt ...

+0

Könnten Sie bitte vollständige Lösung zur Verfügung stellen? Ich stehe vor dem gleichen Problem, und die Einstellung von "Disable_Oob" auf "Ein" in app.config hilft nicht. – 6opuc

+0

Das hat das obige für uns gelöst, als wir das gleiche Problem hatten. Ich konnte nicht feststellen, wo die Daten gelöscht wurden, aber das Hinzufügen der Konfigurationseinstellung führte dazu, dass das Zeitlimit wie erwartet funktionierte. – thudbutt

Verwandte Themen