Ora sto giocando con WebServices, utilizzando il framework .NET (file .asmx, non WCF). Mi chiedo quale sia la prassi migliore per dire all'utente che si è verificata una sorta di errore aziendale nella chiamata al metodo.Best practice per la gestione degli errori in un servizio Web
mio piccolo test-case:
ho sonde di misura che devono registrarsi con un server centrale. Ogni sonda dovrebbe avere un indirizzo fisico diverso. Per iscriversi, si deve chiamare (tramite un servizio web):
[WebMethod]
public void RegisterReadingStation(out Guid sessionId, Int64 physicalAddress)
Ora, la firma non è scolpito nella pietra - in realtà, questo è quello che sto cercando di capire. :) Ho bisogno di avvisare in qualche modo il probe se sta tentando di registrarsi usando un indirizzo fisico che è già stato preso.
Il mio modo di vedere, ho avuto un paio di possibilità:
- gettare un SoapException contenente le informazioni. Tuttavia, un string :: message non è così facile da eseguire controlli programmatici.
- Utilizzare una sorta di classe valore come parametro di ritorno (o anche più semplice, enum). Se faccio questo, suppongo di dover serializzare manualmente/deserializzare la classe sul server/client?
Qualche idea su questo?
Eek, ritorno ai C-giorni. Il problema con questo approccio è che non è molto flessibile. Non è possibile aggiungere messaggi di errore personalizzati come uno stacktrace o un messaggio o ... Posso vedere che questa sarebbe la soluzione facile e multi-compatibile. – cwap
Ho un apprezzamento acquisito per i servizi Web che errano dal lato della semplicità. –
Anche se questa non è la risposta più votata, la accetterò. Mi piace l'aspetto di "Webservices dovrebbe essere semplice da usare", quindi questo è ciò a cui mi stavo attenendo per ora :) – cwap