Gerçekten bir şeyle uğraşmak, buradaki insanların yardımcı olabileceğini umuyorum. Web API 2'de RESTful API'sı yazıyorum. Bu hizmete bir istek gönderdiğimde, yanıt her zaman Content-Type
text/plain
ile gönderiliyor. Açıkçası bu iyi değil, cevabımın application/json
olması gerekiyor. Google'dan bulduğum birkaç öneride bulundum, ancak resmin tamamını anlamıyorum.Web API 2 dönen metin/normal yanıtlar
Web hizmetimin application/json
içeriğiyle yanıt vermesi için özel olarak yapmam gereken bir şey var mı? Bunun tüm uygulama genelinde global olarak çalışmasını istediğimi, bu yüzden belirli bir yanıtı değiştirip içerik türünü ayarlamanın bir yolu olmadığından emin değilim - Bunun tüm web hizmeti için varsayılan bir davranış olmasını istiyorum: Bir istek içeriyorsa için bir başlığı text/plain
yerine web hizmetimin Content-Type
döndürmesini istiyorum.
Düzenleme netleştirmek için:
My tepki JSON içine tefrika ve vücutta dahil edilmelidir "responseData" adlı bir nesne içerir. Şu anda böyle benim yanıtı kuruyorum:
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, responseData);
return response;
responseData
bir POCO olduğunu. Bu get JSON olarak doğru bir şekilde serileştirildi ve yanıtta geri döndü - tek eksik parça yanlış "text/plain" olarak ayarlanmış Content-Type. Bunu oluşturduğum her yanıtta el ile değiştirebilirdim, ancak bunu global düzeyde yapılandırmak istiyorum.
Söz konusu API, kendiniz oluşturduğunuz JSON içeriğiyle bir "dize" döndürüyor mu? – Corey
Bu http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation adresini ziyaret edin: 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 şu anda yanıt bu şekilde yaratıldı: 'HttpResponseMessage response = Request.CreateResponse (HttpStatusCode.OK, responseData);' ve sonra da 'yanıtımı geri döndürüyorum'. ResponseData içeriği JSON içine serileştirilmekte, ancak asıl içerik tipi başlık hala text/plain olarak ayarlanmıştır :( –