Desidero personalizzare le eccezioni/errori generate dal servizio dati WCF, in modo che i client ottengano il maggior numero di informazioni su cosa è andato storto/cosa è andato perso. Qualche idea su come questo potrebbe essere raggiunto?Gestione delle eccezioni con i servizi dati WCF
risposta
È necessario creare eccezioni personalizzate per questo. Si prega di leggere questo post qui: Why Create Custom Exceptions?
In quale lingua si sta sviluppando?
Se avete bisogno di ulteriori indicazioni, si prega di aggiungere alcuni commenti.
Non penso che voglia sapere come gettare/catturare le eccezioni in .NET.
Probabilmente vorrebbe avere dei pensieri su come dire ai clienti che consumano un Servizio Dati WCF che qualcosa (e cosa) è andato storto quando un'eccezione viene lanciata/catturata sul lato server (servizio).
I servizi dati WCF utilizzano i messaggi di richiesta/risposta HTTP e non è possibile semplicemente lanciare un'eccezione dal servizio al client.
Potete decorare la vostra classe di servizio con questo attributo ServiceBehaviorAttribute in questo modo:
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class PricingDataService : DataService<ObjectContext>, IDisposable
{
...
}
Ci sono alcune cose che dovete fare per garantire eccezioni bolla sopra il tubo HTTP al client.
Devi attribuire la classe DataService con il seguente:
[ServiceBehavior (IncludeExceptionDetailInFaults = true)] MyDataService public class: DataService
È necessario abilitare errori verbose nella configurazione:
vuoto statico pubblico InitializeService (configurazione DataServiceConfiguration) { config.UseVerboseErro rs = true; }
è meglio gettare DataServiceException all'interno. Il runtime del servizio dati WCF sa come associare le proprietà alla risposta HTTP e lo avvolge sempre in un TargetInvocationException.
[WebGet]
public Entity OperationName(string id)
{
try
{
//validate param
Guid entityId;
if (!Guid.TryParse(id, out entityId))
throw new ArgumentException("Unable to parse to type Guid", "id");
//operation code
}
catch (ArgumentException ex)
{
throw new DataServiceException(400, "Code", ex.Message, string.Empty, ex);
}
}
È quindi possibile decomprimere questo per il consumatore cliente sovrascrivendo il HandleException nel vostro DataService in questo modo:
/// <summary>
/// Unpack exceptions to the consumer
/// </summary>
/// <param name="args"></param>
protected override void HandleException(HandleExceptionArgs args)
{
if ((args.Exception is TargetInvocationException) && args.Exception.InnerException != null)
{
if (args.Exception.InnerException is DataServiceException)
args.Exception = args.Exception.InnerException as DataServiceException;
else
args.Exception = new DataServiceException(400, args.Exception.InnerException.Message);
}
}
Vedi here per ulteriori informazioni ...
- 1. Gestione delle eccezioni WCF
- 2. WCF: gestione delle eccezioni su OneWay OperationContract
- 3. Gestione delle eccezioni WCF tramite IErrorHandler
- 4. Strategie di gestione delle eccezioni WCF
- 5. Gestione eccezioni Wcf
- 6. BackgroundWorker gestione delle eccezioni
- 7. Gestione delle eccezioni NHibernate
- 8. Gestione delle eccezioni crittografiche
- 9. C++ gestione delle eccezioni
- 10. gestione delle eccezioni python
- 11. Gestione delle eccezioni PostgreSQL
- 12. Python Gestione delle eccezioni
- 13. Gestione delle eccezioni MVVM
- 14. Gestione delle eccezioni per ThreadPoolExecutor
- 15. Gestione delle eccezioni @ControllerAdvice con @ResponseStatus
- 16. Spring MVC gestione delle eccezioni con HandlerExceptionResolver
- 17. Gestione delle eccezioni Web correttamente?
- 18. Python: Queue.Empty Gestione delle eccezioni
- 19. Delphi Problema di gestione delle eccezioni con più blocchi di gestione delle eccezioni
- 20. Robusta gestione delle eccezioni Javascript
- 21. EJB 3.0 gestione delle eccezioni
- 22. Python richiede gestione delle eccezioni
- 23. Monotouch Global Gestione delle eccezioni
- 24. Tipo inizializzatore (costruttore statico) gestione delle eccezioni
- 25. Eccezioni e servizi WCF con tipo di reso void
- 26. Gestione Spring-mvc e gestione delle eccezioni
- 27. Gestione delle eccezioni in linux
- 28. Serializzazione delle eccezioni su WCF
- 29. Gestione globale delle eccezioni Angular2
- 30. php gestione delle eccezioni personalizzate
sto sviluppando in C#. Tuttavia, le eccezioni che butto dal servizio non raggiungono i clienti che consumano il servizio. – Martinfy