Info zur Datenbank
Die erforderlichen Daten für den "ConnectionString" habe ich mir aus der tnsnames.ora auf dem Server genommen.
Problembeschreibung
Hallo zusammen,
ich bekomme beim Ausführen (Klick auf den Button1) nach einer kurzen Zeit von etwa 15 Sekunden folgende Timeout Fehlermeldung:
Fehlermeldung:
Ausnahme ausgelöst: "Oracle.ManagedDataAccess.Client.OracleException" in Oracle.ManagedDataAccess.dll
Eine externe Komponente hat eine Ausnahme ausgelöst."OraConnect.exe" (CLR v4.0.30319: OraConnect.exe): "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\PrivateAssemblies\Runtime\Microsoft.VisualStudio.Debugger.Runtime.Desktop.dll" geladen. Das Laden von Symbolen wurde übersprungen. Das Modul ist optimiert, und die Debugoption "Nur eigenen Code" ist aktiviert.
Das Programm "[24004] OraConnect.exe" wurde mit Code -1 (0xffffffff) beendet.
Leider konnte ich dazu nichts finden und mich würde interessieren warum ich diese Fehlermeldung bekomme bzw. Wo ich ansetzen kann um das Problem zu lösen und eine Verbindung aufgebaut bekomme.
Für Ideen wäre ich euch sehr dankbar. 🙂
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;
using System.Configuration;
using System.Diagnostics;
//OCI: version 11.1
// Oracle Server Version PL/SQL Developer 11g Release 11.2.0.3.0
// DLL C:\OracleInstantClient\oci.dll
namespace OraConnect
{
public partial class Form1 : Form
{
OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
con.Open();
MessageBox.Show("Connected");
con.Close();
}
private void button2_Click(object sender, EventArgs e)
{
con.Close();
Close();
}
}
}
App.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<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.122.21.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<connectionStrings>
<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />
</connectionStrings>
Timeouts sind meistens Verbindungsprobleme, zB Netzwerk, Firewall...
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Timeouts sind meistens Verbindungsprobleme, zB Netzwerk, Firewall...
Das ist mir bewusst. Ich habe (hätte ich natürlich vorher dazu schreiben sollen) Die Verbindung von meinem Client zu der Datenbank getestet und hatte hier keinerlei Probleme mit der Verbindung.
Die Frage ist natürlich, warum bekomme ich keine Verbindung aus meinem Programm heraus?
Könnte jemand evtl. einmal über meinen ConnectionString schauen? Evtl. habe ich hier einen Fehler?
<connectionStrings>
<add name="con" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=*******)(PORT=1***))(CONNECT_DATA=(SERVICE_NAME=ORCL1)));User Id=*********;Password=*******;" />
</connectionStrings>
Dein Client muss nich zwangsläufig die gleiche Verbindungsart haben; es gibt mehrere.
Welchen String Du benötigst kannst Du der Anleitung Deines Providers zusammen mit den Settings des Servers (die kennen wir nicht) entnehmen: ConnectionStrings.com - Forgot that connection string? Get it here!
PS: seit Dir bewusst, dass man neue Applikationen nicht unbedingt mit dem .NET Framework entwickeln sollte.
Dieses wurde mit Version 4.8 abgekündigt. Die neue Welt nennt sich .NET 5 (und höher); auch mit neuen Visual Studio Templates.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
Es lag tatscächlich an einem falschen ConnectioonString
Ich habe jetzt folgenden benutzt und ich bekomme jetzt eine Verbindung zur Datenbank.
<add name="con" connectionString="Data Source=b*******;Persist Security Info=True;User ID=b*******;Password=**********;Unicode=True" providerName="System.Data.OracleClient"/>
Manchmal sind es die einfachsten Dinge 🙂
Aber gut, dass es nun klappt!
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code