20
요청 개체가 있고 요청 콘텐츠 형식을 가져 오는 것은 쉽습니다. 그렇다면 은 응답의 콘텐츠 유형을으로 지정합니까? 내 컨트롤러는 다음과 같습니다 (간결하게하기 위해 다른 작업을 삭제했습니다).웹 API 컨트롤러 메서드에 대한 ContentType을 지정하는 방법
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를 반환하는 작업을 입력 할 수 있음을 보여 할 싶습니다. 그래서 내 방법의 끝은 다음과 같을 것이다 : 내 모두 StringBuilder의 내용을 얻는 방법을
는var response = new HttpResponseMessage() ;
response.Headers.Add("ContentType","text/csv");
response.Content = //not sure how to set this
return response;
HttpContent에 대한 설명서가 좀 부족
, 사람이 반대 HttpContent에 나를 조언을 할 수 있습니까?
아하! 그것은 내가 필요로하는 Request.CreateResponse의 사용이었다. 포인트는 모두 당신! (그냥 MediaTypeFormatter를 보았습니다 ... 왜 누군가가 그렇게 복잡하게 만들었습니까?) –
"yet"를 생략 할 수 있습니다. 쓸 수있는 미디어 유형 'text/csv'와 일치하는 포맷터를 찾을 수 없습니다. 'String'의 인스턴스입니다. 이것은 * 문자열을 * Logic을 MediaTypeFormatter에 넣고 text/csv와 연결하고 CreateResponse를 통해 LINQ 결과를 전달해야 함을 알려줍니다. 거기에 고비를 넘겨 줘서 고마워. –
당신 말이 맞아요. 내 업데이트를 참조하십시오. – haim770