답변:
구체적으로 문자열의 경우 가장 빠른 방법은 StringContent 생성자 를 사용하는 것입니다
response.Content = new StringContent("Your response text");
다른 일반적인 시나리오에 대한 추가 HttpContent 클래스 하위 항목 이 많이 있습니다.
Request.CreateResponse를 사용하여 응답을 작성해야합니다 .
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Error message");
문자열뿐만 아니라 객체를 CreateResponse에 전달할 수 있으며 요청의 Accept 헤더에 따라 객체를 직렬화합니다. 이렇게하면 포맷터를 수동으로 선택하지 않아도됩니다.
CreateErrorResponse()
이 답변의 예에서와 같이 응답이 오류 인 경우 전화 하는 것이 더 정확하다고 생각합니다 . 내 시도 - 캐치 내부 내가 사용하고 있습니다 : this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "message", exception);
그리고 당신은 발신자의 헤더를 수락 존중에 대해 모든 관련에 있다면, 이것은 정답, 여분의 속임없이 (당신은 WebAPI를 사용).
ApiController
입니다. 상속 Controller
HttpResponseMessage msg = new HttpResponseMessage(); msg.Content = new StringContent("hi"); msg.StatusCode = HttpStatusCode.OK;
분명히 새로운 방법은 다음과 같습니다.
http://aspnetwebstack.codeplex.com/discussions/350492
헨릭을 인용하자면
HttpResponseMessage response = new HttpResponseMessage();
response.Content = new ObjectContent<T>(T, myFormatter, "application/some-format");
따라서 기본적으로 ObjectContent 유형을 작성해야하며 HttpContent 객체로 반환 될 수 있습니다.
new JsonMediaTypeFormatter();
형식에 따라 비슷하거나 비슷할 것입니다
ObjectContent
WCF를 사용하여 찾을 수 없습니다
가장 쉬운 단선 솔루션은
return new HttpResponseMessage( HttpStatusCode.OK ) {Content = new StringContent( "Your message here" ) };
직렬화 된 JSON 컨텐츠의 경우 :
return new HttpResponseMessage( HttpStatusCode.OK ) {Content = new StringContent( SerializedString, System.Text.Encoding.UTF8, "application/json" ) };
고유 한 특수 컨텐츠 유형을 작성할 수 있습니다. 예를 들어 Json 컨텐츠와 Xml 컨텐츠를위한 것 (HttpResponseMessage.Content에 할당) :
public class JsonContent : StringContent
{
public JsonContent(string content)
: this(content, Encoding.UTF8)
{
}
public JsonContent(string content, Encoding encoding)
: base(content, encoding, "application/json")
{
}
}
public class XmlContent : StringContent
{
public XmlContent(string content)
: this(content, Encoding.UTF8)
{
}
public XmlContent(string content, Encoding encoding)
: base(content, encoding, "application/xml")
{
}
}
Simon Mattes의 답변에서 영감을 얻은 IHttpActionResult 필수 반환 유형의 ResponseMessageResult를 충족해야했습니다. 또한 nashawn의 JsonContent를 사용하여 결국 ...
return new System.Web.Http.Results.ResponseMessageResult(
new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK)
{
Content = new JsonContent(JsonConvert.SerializeObject(contact, Formatting.Indented))
});
JsonContent에 대한 nashawn의 답변을 참조하십시오.