Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Testare risposta di un web service in winform????
lunedì 07 novembre 2005 - 15.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
andreapavia
Profilo
| Senior Member
203
messaggi | Data Invio:
lun 7 nov 2005 - 15:47
in un progetto winform istallato su piu' client con database centralizzato e interrogato tramite web services mi succede questo
utentiF è IL MIO WEB SERVICE DI LOGIN E QUESTO E' IL CODICE
dim utentiF as new web_utenti.utenti
Try
utentiF.Credentials = System.Net.CredentialCache.DefaultCredentials
controllo_check = utentiF.check(connessioneStr, stringaLogin.Trim, stringaPWD.Trim)
Catch ex As Exception
controllo_check = -2
End Try
If controllo_check = -2 Then
MessageBox.Show("ASSENZA DI COLLEGAMENTO AL WEB SERVICE", "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
Else
' fa tutto quello che deve fare
end if
********** PROBLEMA
se il server dove si trova il webservice non è raggiungibile catturo l'eccezione, mostro il messaggio di errore e tutto è ok, non c'è rete o il server è giu', il dabase è bloccato ecc ecc .....
il problema che si pone è il seguente...
lancio la login, stacco il cavo di rete (x simulare qualcosa che per la legge di murphy accadra' sicuramente) e non ho ancora ricevuto una risposta dal sever il winform si inchioda e il try e catch non fanno nulla (giustamente perchè testano se hanno ragiunto il webservice).....
come faccio ad intercettare questo tipo di eccezione????
come faccio a far capire al mio winform (perchè giustamente lui sta fermo su una riga di codice ad attendere una risposta da web serviece che non arrivara' mai) che non c'è rete, come catturo questa eccezione ??????
grazie 1000
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 7 nov 2005 - 17:15
>come faccio ad intercettare questo tipo di eccezione????
>come faccio a far capire al mio winform (perchè giustamente
>lui sta fermo su una riga di codice ad attendere una risposta
>da web serviece che non arrivara' mai) che non c'è rete, come
> catturo questa eccezione ??????
Ciao,
non mi risulta che funzioni così. Nel momento che tu chiami un Web Service viene aperto un socket sulla porta remota 80 del server. Se in questo momento tu stacchi il cavo di rete il socket non è più collegato quindi per forza deve scatenare un eccezione.
Anche se non la dovesse scatenare, ci deve essere sicuramente un sistema di Timeout entro il quale la classe Proxy del Web Service deve ricevere i dati. Se non li riceve scatta il timeout e tu hai l'eccezione.
Hai già sperimentato il caso che hai sottoposto ?
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
rimini
Profilo
| Newbie
18
messaggi | Data Invio:
mar 8 nov 2005 - 10:17
Ciao, non ho la soluzione al tuo caso, ma posso dire che esiste un errore di time out, che scaturisce dal momento in cui tu stacchi la rete. Inserendo un msgbox try vedrai apparirti l'errore, diverso a seconda se il database è irraggiungibile (cavo rete staccato o server down) o se il db è occupato, sono errori diversi che se inseriti nel try non vengono visualizzati.
Ora recupero la linea con cui vedrai l'errore, intanto xò puoi fare la prova togliendo il try e leggendo l'errore che ti compare a video, da li saprai poi come comportarti.
andreapavia
Profilo
| Senior Member
203
messaggi | Data Invio:
mar 8 nov 2005 - 10:46
dunque....
descrivo il mio test :
i web service sono sul mio client (il mio pc che uso per sviluppare, quello con visual studio per intenderci), non li ho ancora istallati sul server.... mentre il database è sul server
clicco su un bottone di login, appena clicco stacco il cavo di rete e "BOOM" il winform si impalla e nel Catch non ci entra (provato con punto di debug)
dim utentiF as new web_utenti.utenti
Try
utentiF.Credentials = System.Net.CredentialCache.DefaultCredentials
controllo_check = utentiF.check(connessioneStr, stringaLogin, stringaPWD)
Catch ex As Exception
controllo_check = -2
End Try
nel momento in cui mettero i web service sul server l'eccezione verra' catturata oppure mi si blocchera' ancora il programma?????
grazie 1000
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 8 nov 2005 - 13:59
>clicco su un bottone di login, appena clicco stacco il cavo di
>rete e "BOOM" il winform si impalla e nel Catch non ci entra
>(provato con punto di debug)
Ripeto, non è necessario che ci entri subito magari il timeout è a 120 secondi quindi entrerà solo dopo 2 minuti. hai già fatto anche questa prova ?
Ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
andreapavia
Profilo
| Senior Member
203
messaggi | Data Invio:
gio 10 nov 2005 - 09:45
risolto il problema... avevo fatto una fesseria senza accorgermene..... le classi per connessione e esecuzione query, non erano nei web service perchè li avevo trasformati in classi vb normali..... ora mi pigla tranquillamente l'eccezione
grazie 1000
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !