Я делаю из ApiController прямой SQL-запрос (SQL Server 2014) к БД:
public object Post(JObject jsonData){
//..
string qvalue = "SELECT s.Id, v.[Name] VehicleId, s.TimestampLocal FROM Status s INNER JOIN Vehicles v on s.VehicleId = v.Id";
var resl = entities.Database.SqlQuery<StatusTime>(qvalue);
return resl;
Ответ поступает клиенту как Content-Type: "application/json; charset=utf-8". Я хочу изменить Content-Type на что-то другое, например: «application/json» или даже «text/xml».
Я попытался добавить перед "return resl;" строка: HttpContext.Current.Response.ContentType = "application/json";
но это ее не меняет.
Я попытался добавить что-то в заголовок (просто чтобы увидеть, как изменился ответ), и заголовок был изменен (и поступил к клиенту изменен) с помощью:
HttpContext.Current.Response.AppendHeader("test", "hello");
Я видел этот пример: HttpContext.Current.Response.AddHeader( ) не устанавливая заголовок Content-Type
и действительно, он устанавливает тип содержимого, но я понятия не имею, как применить его к результату SqlQuery. Также я не хочу переносить данные на сервер IIS с помощью .ToList или подобного, а затем записывать их в ответ, потому что он массивный (~ 80 МБ).
Я тоже видел это: WebAPI для возврата XML
и: Изменить заголовок Content-Type для HttpResponseMessage
Как это можно было сделать, или это решает за меня контролер?
charset
является частью кодировки ответа. В вашем конфигурационном файле указаноresponseEncoding
? - person stephen.vakil   schedule 16.09.2016