Ciao,
secondo me dipende dalle esigenze che hai sul client.
Potresti farti tornare come parametro di ritorno della funzione un enum con due valori:
- RecordNonPresente
- DatiReferenziati
e gestire nell'applicazione che chiama il webservice questo parametro.
Per ogni altro errore potresti pensare di generare un'eccezione nel tuo webservice. In questo modo sul client avresti una routine di questo tipo:
//WebService
TestSiteWS.WSProva ws = new TestSite.TestSiteWS.WSProva();
string strRisultato = string.Empty;
try
{
//Chiamata a webservice
TestSiteWS.FunctionResult risultato = ws.EliminaRuolo(2);
if (risultato == TestSiteWS.FunctionResult.RecordNonPresente)
//Record non presente
strRisultato = "Ruolo non presente";
if (risultato == TestSiteWS.FunctionResult.RecordReferenziato)
//Record referenziato
strRisultato = "Ruolo referenziato";
}
catch (Exception ex)
{
//Errore generico
string strError = ex.Message;
}
Questo ovviamente facendo alcune considerazioni del tipo:
- le eccezioni si verificano di rado (non è mai bello avere troppe eccezioni in un programma perchè la loro gestione impiega molte risorse). Da quanto ho capito il caso 30 si verifica solo se ci sono anomalie non gestite.
- Non ti interessa avere per i primi 2 casi (10, 20) una descrizione personalizzata
Se invece ti interessa avere oltre al codice di errore anche una descrizione ti consiglio di fare una classe o una struttura da ritornare come risultato del metodo, secondo me è una soluzione più elegante:
public enum CodiceRisultato
{
RecordNonPresente = 10,
RecordReferenziato = 20,
ErroreGenerico = 30
}
public class Risultato
{
private CodiceRisultato _Codice;
private string _Messaggio;
public CodiceRisultato Codice
{
get { return _Codice; }
set { _Codice = value; }
}
public string Messaggio
{
get { return _Messaggio; }
set { _Messaggio = value; }
}
}
[WebMethod]
public Risultato EliminaRuolo(int ID)
{
Risultato res = new Risultato();
res.Codice = CodiceRisultato.RecordNonPresente;
res.Messaggio = "Ruolo non presente";
return res;
}