Ik ben bezig om via een webservice mijn MySQL database te kunnen benaderen. Ik heb hiermee een beetje lokaal zitten stoeien. Dat is gelukt, ik kan een ODBC verbinding naar mijn MySQL database maken. Nu dacht ik dat 'eventjes' in mijn Webservice te plakken maar dat lukt dus niet. Ik heb het op 2 manieren geprobeerd maar bij beide krijg ik dezelde error.
Methode 1:
Methode 2:
De exception die ik bij allebei de methodes krijg:
bij methode 1: conn.Open();
bij methode 2: adapter.Fill(DS);
Vooral de exception bij methode 2 vind ik vreemd. Waarom mag ik geen DataSet vullen in een Webservice?
Beide methodes werken dus wel in een simpele form applicatie maar krijg ik niet draaiende in een Webservice. Op enkele forums heb ik al wat gelezen over het gebruik van "Impersonate". Hiermee zou het mogelijk zijn om dit voor elkaar te krijgen. Ik heb mijn web.config file aangepast met de volgende regels:
Op de host waar de webservice (hostname) is de gebruiker 'webuser' met password 'webuser' aangemaakt. Deze gebruiker heeft administrator rechten.
Iemand die mij en tip kan geven? zit nu behoorlijk vast.
Skiwi
Methode 1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| public string GetCustomerDetails(string sKlantnr)
{
OdbcConnection conn = new OdbcConnection("dsn=pcsupport;uid=root;pwd=");
string sNaam = "";
string sQuery = "SELECT naam FROM klantgegevens WHERE klantnr='" + sKlantnr + "'";
try
{
conn.Open(); //Nu krijg ik de exception hier
OdbcCommand insertCMD=new OdbcCommand(sQuery);
insertCMD.Connection = conn;
OdbcDataReader result = insertCMD.ExecuteReader(CommandBehavior.CloseConnection);
while(result.Read())
{
sNaam = result.GetString(0);
}
if (conn.State == ConnectionState.Open)
conn.Close();
return sNaam;
}
catch (Exception exp)
{
return exp.Message;
}
} |
Methode 2:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public DataSet GetCustomerDetails(string sKlantnr)
{
DataSet DS = new DataSet();
string sQuery = "SELECT * FROM klantgegevens WHERE klantnr='" + sKlantnr + "'";
try
{
OdbcConnection conn = new OdbcConnection("dsn=pcsupport;uid=root;pwd=;");
OdbcDataAdapter adapter = new OdbcDataAdapter();
adapter.SelectCommand = new OdbcCommand(sQuery, conn);
adapter.Fill(DS); // Hier krijg ik een exception
}
catch (Exception e)
{
throw e;
}
return DS;
} |
De exception die ik bij allebei de methodes krijg:
bij methode 1: conn.Open();
bij methode 2: adapter.Fill(DS);
code:
1
2
3
| ERROR [IM002] [Microsoft][ODBC-stuurprogrammabeheer] De naam van de gegevensbron is niet gevonden en er is geen standaardstuurprogramma opgegeven |
Vooral de exception bij methode 2 vind ik vreemd. Waarom mag ik geen DataSet vullen in een Webservice?
Beide methodes werken dus wel in een simpele form applicatie maar krijg ik niet draaiende in een Webservice. Op enkele forums heb ik al wat gelezen over het gebruik van "Impersonate". Hiermee zou het mogelijk zijn om dit voor elkaar te krijgen. Ik heb mijn web.config file aangepast met de volgende regels:
code:
1
2
3
| <system.web> <identity impersonate="true" userName="hostname\webuser" password="webuser"/> </system.web> |
Op de host waar de webservice (hostname) is de gebruiker 'webuser' met password 'webuser' aangemaakt. Deze gebruiker heeft administrator rechten.
Iemand die mij en tip kan geven? zit nu behoorlijk vast.
Skiwi