Istnieje obiekt Request, a pobieranie treści typu żądania jest łatwe. Ale w jaki sposób określasz typ zawartości dla odpowiedzi? Mój kontroler wygląda tak (inne czynności wycięte dla zwięzłości):Jak określić ContentType dla metody kontrolera Web 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();
}
}
Działa to dobrze, z tym że ma niewłaściwy typ zawartości. Chciałbym to zrobić. Niewiele badań ujawnia, że możemy wpisać akcję, która zwróci komunikat HttpResponseMessage. Więc koniec mojej metody wyglądałby następująco:
var response = new HttpResponseMessage() ;
response.Headers.Add("ContentType","text/csv");
response.Content = //not sure how to set this
return response;
Dokumentacja na HttpContent jest raczej rzadki, może ktoś mi doradzić w jaki sposób uzyskać zawartość mojego StringBuilder w produkt HttpContent obiekt?
Aha! To było użycie Request.CreateResponse, którego potrzebowałem. Punkty są wszystkie! (Po prostu spojrzał na MediaTypeFormatter ... dlaczego ktokolwiek zrobiłby to tak skomplikowane?) –
Możesz pominąć "jeszcze" ... Dostaję "Nie można znaleźć formatera pasującego do typu mediów" text/csv ", który może pisać instancja "String"., która mówi mi, że muszę umieścić moją * kompilację łańcuchową * w logice MediaTypeFormatter i powiązać ją z tekstem/csv, i przekazać do niej wynik LINQ poprzez CreateResponse. Dzięki, że mnie tu przesadziłeś. –
Masz rację. Zobacz moją aktualizację. – haim770