c'è un modo di cambiare il comportamento del Web Api di default per i messaggi di errore, come ad esempio:asp.net Web Api - Messaggi di errore di default
GET /trips/abc
risponde con (parafrasato):
HTTP 500 Bad Request
{
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'tripId' of non-nullable type 'System.Guid' for method 'System.Net.Http.HttpResponseMessage GetTrip(System.Guid)' in 'Controllers.TripController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
I Vorrei evitare di fornire queste informazioni piuttosto dettagliate sul mio codice e sostituirlo con qualcosa del tipo:
HTTP 500 Bad Request
{
error: true,
error_message: "invalid parameter"
}
Sarei in grado di farlo all'interno dell'UserController, ma l'esecuzione del codice non è neanche lontanissima.
edit:
Ho trovato un modo per rimuovere messaggi di errore dettagliati dall'uscita, utilizzando questa riga di codice in Global.asax.cs:
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =
IncludeErrorDetailPolicy.LocalOnly;
Ciò produce un messaggio come questo :
{
"Message": "The request is invalid."
}
che è meglio, ma non è esattamente quello che voglio - abbiamo specificato una serie di codici di errore numerici, che sono mappati al dettaglio i messaggi di errore sul lato client. Vorrei uscita solo il codice di errore appropriato (che io sono in grado di selezionare prima uscita, preferibilmente da vedere che tipo di eccezione si è verificato), ad esempio:
{ error: true, error_code: 51 }
Perfetto, Grazie! – doque
Se ti chiedi dove aggiungerlo, può essere aggiunto chiamando 'config.MessageHandlers.Add (new YourDelegatingHandler())', di solito nel metodo 'Register (HttpConfiguration config)' nella tua logica di avvio. –
Invece di sostituire il contenuto della risposta dopo che è stato creato, non dovremmo piuttosto personalizzare la classe/servizio che è responsabile della creazione di quella risposta in primo luogo? – dgaspar