Подтвердить что ты не робот

Как указать ContentType для метода API веб-API

Там объект запроса и получение типа содержимого запроса легко. Но как вы определяете тип контента для ответа? Мой контроллер выглядит так (другие действия вырезаны для краткости):

public class AuditController : ApiController
{   
  // GET api/Audit/CSV
  [HttpGet, ActionName("CSV")]
  public string Csv(Guid sessionId, DateTime a, DateTime b, string predicate)
  {
    var result = new StringBuilder();
    //build a string
    return result.ToString();
  }
}

Это работает отлично, за исключением того, что у него неправильный тип контента. Я бы хотел сделать это

Response.ContentType = "text/csv";

Небольшое исследование показывает, что мы можем ввести действие, чтобы вернуть HttpResponseMessage. Итак, конец моего метода будет выглядеть так:

  var response = new HttpResponseMessage() ;
  response.Headers.Add("ContentType","text/csv");
  response.Content = //not sure how to set this
  return response;

Документация по HttpContent довольно скудная, может ли кто-нибудь сообщить мне, как получить содержимое моего StringBuilder в объект HttpContent?

4b9b3361

Ответ 1

Вам нужно будет изменить возвращаемый тип метода на HttpResponseMessage, затем используйте Request.CreateResponse:

// GET api/Audit/CSV
[HttpGet, ActionName("CSV")]
public HttpResponseMessage Csv(Guid sessionId, DateTime a, DateTime b, string predicate)
{
    var result = new StringBuilder();

    //build a string

    var res = Request.CreateResponse(HttpStatusCode.OK);
    res.Content = new StringContent(result.ToString(), Encoding.UTF8, "text/csv");

    return res;
}