У меня есть служба веб-API ASP MVC, и мой метод должен возвращать данные в определенном формате (JSON, XML и т. Д.). Формат ответа зависит от метода и не зависит от предпочтений клиента.
Я использую HttpResponseMessage
и ObjectContent
, и мне нужно установить MediaTypeFormatter для ObjectContent
.
Я могу это сделать так:
new ObjectContent<MyDataContract>(data, new JsonMediaTypeFormatter())
или так:
new ObjectContent<MyDataContract>(data, Configuration.Formatters.FirstOrDefault(f => f.GetType() == typeof(JsonMediaTypeFormatter)))
Ни один из них не выглядит хорошо.
Первый создает новый объект для каждого запроса.
Второй использует поиск, и здесь это выглядит неуместным.
Может ли кто-нибудь знать лучшее решение моей проблемы?
[ThreadLocale]
статической переменной или, проще говоря, вstatic ThreadLocal<JsonMediaTypeFormatter> _jsonMediaTypeFormatter;
- person Adriano Repetti   schedule 17.11.2015JsonMediaTypeFormatter
уже сохранен вConfiguration.Formatters
, поэтому я не думаю, что эта идея намного лучше. У меня нет серьезных проблем с моим решением, но я хочу, чтобы оно было красивее :) - person Alexander   schedule 17.11.2015return Json()
, но вместо этого к определению действия применено[Json]
. - person freedomn-m   schedule 17.11.2015