Probleme mit IIS und ODBC

Zorck

Erfahrenes Mitglied
Hallo,
ich hab ziemliches Problem und finde einfach keine Lösung.
Ich entwickel gerade einen Webservice, der unter anderem auf Daten einer Datenbank zugreift bzw. die tun soll. Jedoch liegt genau da mein Problem.

Immer wenn ich eine Verbindung zur MySQL Datenbank aufbauen will (Connection.Open() ), scheint sich der gesamte IIS Server aufzuhängen. Es passiert einfach gar nichts mehr - beim Debuggen kehrt er einfach nicht vom Aufruf zurück, eine Exception wird aber auch nicht geworfen.

Wenn ich den gleichen Quelltext in einer einfachen Windowsapplikation verwende, läuft alles einwandfrei. Hat irgendwer vielleicht eine Idee, wo das Problem liegt?

Noch kurz zu den "Rahmenbedingungen":
- Webservice als ASP Webservice in C#
- .NET 1.1
- MyODBC 3.51

Hoffe auf Hilfe!

Gruß,
David
 
Hast du vielleicht n bischen Code, wie du das ganze machst:confused:
Also ich arbeite nun doch auch schon länger mit Asp.Net, und MySql, aber das Problem kenn ich nicht :)

Deshalb bischen mehr Details plz.
 
Na klar, ich stell hier einfach mal nen bissl Code rein:

Code:
string sConnectionString = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" + vsServerAdress + "; DATABASE=" + vsDataBaseName + "; UID=" + vsUserName + "; PASSWORD=" + vsPassword + ";OPTION=3";

oDBConnection = new OdbcConnection(sConnectionString);


Hier nen weiterer kleiner Ausschnitt:
Code:
			try 
			{
				oDBConnection.Open();
								
				string sql = "SELECT test " +
							 "FROM irgendwo " +
							 "WHERE a = " + blabla;
				
				OdbcCommand dbCmd = oDBConnection.CreateCommand();
				OdbcDataReader dbReader;
				
				dbCmd.CommandText = sql;
				dbReader = dbCmd.ExecuteReader();

				
				if (dbReader.HasRows)
				{
					return true;					
				}

				dbReader.Close();
			}
			catch (Exception e)

Ist natürlich nicht alles, aber mehr brauch es ja dazu nicht. Eigentlich ist alles nach oDBConnection.Open(); egal, da er ja genau an dieser Stelle stehen bleibt und keinen Mucks mehr macht. Ideen?
 
Ich hab Grundsätzlich, wenn ich mit Sql arbeite immer SqlCommands verwendet, also zB:
C#:
private SqlConnection connection = new SqlConnection("server;uid;pwd;etc");

private void getFiles()
{
connection.Open;

string sqlGetFiles ="Select * from deineTabelle";

SqlCommand sqlComGet = new SqlCommand(sqlGetFiles,connection).

//Und nun die verschiedenen Commands -->

sqlComGet.ExecuteScalar():
sqlComGet.ExecuteNonQuery();
sqlComGet.ExecuteReader();

//Schau google oder so was die einzelnen Bedeuten falls du sie nicht kennst.
}

Weiss nicht ob dir das hilft, aber wie gesagt, ich bau meine SqlAbfragen immer so auf.

Greetz

ziop
 
Also mir fallen da gleich mal 2 Punkte auf:

1. Eine mögliche Exception abfangen ist schon mal ganz gut. Allerdings solltest du damit auch etwas machen. Du fängst sie nur ab und tust damit nichts. Also, entweder in ein Logfile schreiben, ausgeben, zumindest irgendetwas damit tun, sonst bekommst du sie nämlich nicht mit.

2. Beim Command musst du natürlich immer die Connection mit angeben. Also:

C#:
OdbcCommand oc = new OdbcCommand("SQL STATEMENT", myConnection);
 
Danke erstmal für die Antworten.
Aber helfen tut mir das auch nicht.
Vielleicht hab ich mich flasch ausgedrückt. Der Rechner hängt sich richtig auf!
Am Code kann es nicht liegen, da exakt der selbe Code in einer "normalen" Windowsanwendung läuft.
Ich komme nie über die Zeile oDBConnection.Open(); hinaus!!

Ich hab jetzt ganz auf den WebService verzichtet.
Trotzdem würde mich mal interessieren, was da abgeht.
Falls also irgendwer ne Idee hat....

Bis dann,
David
 
Du bist sicher dass dieser Code läuft? Naja, davon unabhängig.

1. Liegt die Datenbank am gleichen Server?
2. Sind alle Zugriffsrechte gesetzt?
3. Passt der ConnectionString?
4. Hast bei der Datenbank mal nachgesehen, ob sich ein Thread auftut?

etc. Da gibts einige Dinge zu prüfen. Im Normalfall sollte es da keine Probleme geben. Der Unterschied zu einer Win-Forms-Anwendung liegt allerdings darin, dass es sich bei einem WebService um eine "multithreaded" Umgebung handelt. Eventuell liegt darin dein Problem.

Und wie gesagt, programmier deinen catch-Block aus. So kann das nichts!
 
Wie gesagt, das ist nur ein kleiner Auszug um es übersichtlich zu gestalten.
Der Catchblock ist ausprogrammiert! :)
Ich bin mir auch zu 100% sicher das der Code so funktioniert - somit ConnectionString etc. richtig ist.
Gibts irgendwelche Rechteeinstellungen beim IIS die hier beachtet werden müssen?
Kann es sein, dass gewisse .NET Sicherhheitsschranken den Zugriff zu ODBC verweigern?

Gruß,
David
 
Standardmäßig sollten hier keine Probleme auftreten. Wurde irgendwas an den .NET Rechten etc. verändert? Irgendwelche speziellen Einstellungen?

Auf welchem System läuft das überhaupt? Windows 2000 + IIS 5 oder Windows 2003 + IIs 6 ?
 
Das läuft aus WinXP (und dem IIS der da standardmäßig mit bei is :) ).
Ob der Probleme hat weil .NET 1.1 und .NET 2.0 drauf laufen, eigentlich nicht, oder?
 
Zurück