Davvero in difficoltà con qualcosa spero che le persone qui possano aiutarti. Sto scrivendo un'API RESTful in Web API 2. Ogni volta che invio una richiesta a questo servizio, la risposta viene inviata costantemente con uno Content-Type
di text/plain
. Ovviamente questo non va bene, la mia risposta deve essere Content-Type
di application/json
. Ho provato alcuni suggerimenti che ho trovato da Google, ma non credo di capire l'intera immagine.Web API 2 restituendo testo/risposte semplici
C'è qualcosa di speciale che devo fare per far rispondere il mio servizio web con il contenuto di application/json
? Nota che voglio che funzioni a livello globale su tutta l'app, quindi non sono in grado di modificare una determinata risposta e impostare il suo tipo di contenuto: voglio che questo sia un comportamento predefinito per l'intero servizio web: Se una richiesta contiene un'intestazione Accept
per application/json
Desidero che il mio servizio Web restituisca quello Content-Type
anziché text/plain
.
Modifica per chiarire:
La mia risposta contiene un oggetto chiamato "responseData" che dovrebbe essere serializzato in JSON e inclusa nel corpo. Attualmente sto mettendo insieme la mia risposta in questo modo:
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, responseData);
return response;
responseData
è un POCO. Questo get è serializzato correttamente come JSON e restituito nella risposta - l'unica parte mancante è il Content-Type che è impostato erroneamente su "text/plain". Potrei cambiarlo manualmente su ogni singola risposta che compongo, ma voglio configurarlo a livello globale.
L'API in questione restituisce una 'stringa' con contenuti JSON creati da te? – Corey
Controllare questo http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation, http: //msdn.microsoft.com/en-us/magazine/dn574797.aspx , http: //blogs.msdn.com/b/henrikn/archive/2012/04/22/asp-net-web-api-content-negotiation-and-accept-charset.aspx, – malkam
@Corey attualmente la risposta è creato in questo modo: 'HttpResponseMessage response = Request.CreateResponse (HttpStatusCode.OK, responseData);' e quindi restituisco 'response' nella mia azione. Il contenuto di responseData viene serializzato in JSON in modo corretto, ma l'intestazione content-type effettiva è ancora impostata su text/plain :( –