Hallo,
ich suche jetzt schon seit einigen Tagen nach einer Lösung. Hier das Problem in Stichpunkten:
WebDev.WebServer40 ist der eigene Webserver der das Visual Studio mitbringt,
heißt auch "ASP.NET Development Server" oder Cassini
Ich habe eine Datenbankverbindung zu MYSQL-Server programmiert (mysql-connector-net-6.4.5 ist hierfür installiert).
Der Open-Befehl schlägt aber fehl, mit einer nichtssagenden Fehlermeldung:
Fehlermeldung:
"Unable to connect to any of the specified MySQL hosts"
Der innere Fehler läßt auf Verbindungsschwierigkeiten schliesen:
Fehlermeldung:
And the InnerException:
"System.Net.Sockets.SocketException"
"error-no 10022: An invalid argument was supplied"
"Socket Error Code: invalid argument"
Ich habe daher die Verbindung zur MYSQL-DB auf andere Art und Weise getestet:
a) mit Server Explorer > Data Connection
==> hat Funktioniert
b) mit einer einfachen WindowsForm-App und Programm-Code:
using MySql.Data.MySqlClient;
//...
String myConnectionString = "server=127.0.0.1;"
+ "uid=root;"
+ "Persist Security Info=True;"
+ "pwd=secret;"
+ "port=3333;"
+ "database=test;"
+ "charset=latin1;"
;//OK!
MySqlConnection conMySQL = new MySqlConnection();
MySqlCommand commMySQL = new MySqlCommand();
try
{
conMySQL.ConnectionString = myConnectionString;
conMySQL.Open();
//execute queries, etc
commMySQL.Connection = conMySQL;
commMySQL.CommandTimeout = 10; //10 sec timeout default 30
commMySQL.CommandText = "select name, species from pet;";
MySqlDataReader datareaderMySQL = commMySQL.ExecuteReader();
while (datareaderMySQL.Read())
{
Console.WriteLine(datareaderMySQL[0]); //write to Output
listBox1.Items.Add(datareaderMySQL[0]+ ", " + datareaderMySQL[1]);
}
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Number
+ ": "
+ ex.Message);
}
catch (Exception exp)
{
//ev. Standardfehler
MessageBox.Show("Error: " + exp);
}
finally
{
conMySQL.Close();
}
==> hat funktioniert.
Nur wenn ich diesen Code in das ASP.NET MVC Projekt eingebe, bei:
public class CWebAppMVC3 : System.Web.HttpApplication
{
protected void Application_Start()
{
...
}
}
dann funktioniert die Verbindung nicht (Fehlermeldung siehe oben) ???
Ich dachte das ASP.NET vielleicht in einem anderen Sicherheitskontext läuft als eine Windows Anwendung; aber dann habe ich diese Aussage gefunden:
"The Visual Studio Development Server runs in a different security context than full IIS"
und bei MSDN:
"The security context in which the servers run your ASP.NET pages:
When you run a page using the Visual Studio Development Server,
the page runs in the context of your current user account."
Gut, ich bin Admin also läuft auch der VS-Web-Server als Admin - richtig?
Und ich kann als Admin auch auf die MySQL-DB zugriffen; z.B via MYSQL-QueryBrowser, oder mit Windows Program Code.
Also, warum klappt das dann mit dem ASP.NET Projekt nicht, aber mit dem Windows-Projekt?
Wie bekomme ich raus in welchem SecurityContext ich mich befinde,
wenn ich im Programm auf die MySQL-DB zugreife?
(Bsys: W2k3-Test-Server + Firewall ist inaktiv, VS2010 Prof, MySQL5.0)
Vielen Dank!