Hej, När du från din winapp kör din setmetod på webservern så kommer ju värdet på str på webbservern att försvinna direkt efter anropet vilket gör att när du sedan kör getmetoden sedan så är str = "". Webservicen är ju stateless. OK, tack för svaret!Använda webservice från Win app, problem!
Har proglem med att använda en webservice från en windows applikation.
Det funkar som det ska i en aspx-sida.
Jag undrar om jag har missförstått hur webservices ska användas...
Här är ett exemel:
Webservice:----------
private string str;
[webmethod]
void setStr(string s)
{ str = s;}
[webmehtod]
void getStr()
{return str;}
---------------------
För att sen använda metoderna:
--Function in win app (& aspx-page)--------
Button1_click(sender, eveArg)
{
WebserivceTest wst = new Webservicetest();
wst.setStr("hello");
string returnStr = wst.getStr();
}
-----------------------------------------
Det här fungerar utan problem om det körs på en aspx-sida och returnStr = "hello".
Men när man kör samma sak i win applikationen returnerar wst.getStr() null..
Har jag missförstått nått stort?
Tacksam för svar
Victor
Sv: Använda webservice från Win app, problem!
Det som sker på webservern är i princip detta (starkt förenklat och beskrivet på ett mycket överskådligt sätt):
1. webserverna anropas och skapar klassen där dina metoder finns
2. metoden setStr anropas och sätter str
3. anropet "återvänder" till klienten och klassen skickas till GC (dvs den "fins inte" längre)
4. webserverna anropas och skapar en ny klass
5. metoden getStr anropas och eftersom str inte har blivit tilldelat något värde returneras ""
6. anropet "återvänder" till klienten och klassen skickas till GC (dvs den "fins inte" längre)
Dessutom borde väl din metod
<code>
[webmehtod]
void getStr()
{return str;}
</code>
se ut såhär:
<code>
[webmehtod]
public string getStr()
{
return str;
}
</code>
void säger ju att den inte skall returnera något...Sv:Använda webservice från Win app, problem!
Undrar bara varför det det fungerar (som jag vill) när man kör metoderna från en aspx sida på servern istället för från winapplikationen? Är inte webservicen alltid stateless? Lagrar aspx-sidan nått objekt med str som används när get metoden sen anropas?
Fråga nr 2:
Kan man få nått tips på hur man skulle kunna göra detta med en webbservice (anrop från winapp):
1. en användare loggar in med winapp som kontaktar en webbservice.
(autetisering ger mha cookiecontainer och funkar)
Då ska användarens GruppID sparas på något sätt.
2. användaren vill sedan ändra uppgifter i en databas som är knyten till användarens grupp genom gruppID't. Detta görs enkelt genom webbservicen.
PROBLEMET är att jag vill inte behöva anropa databasen varje gång för att få reda på grupppId't. Sammtidigt vill jag inte att GruppID't ska sparas hos klienten och bifogas som parameter i medoten för att ändra uppgifter. Då skulle en användare i en grupp kunna logga in och ändra saker i andra gruppers databaser genom att anropa metoden med egna parameters.
Något förslag på hur detta lättast görs?
void-grejjen = typo..
/victor