How to return raw string with ApiController? How to return raw string with ApiController? asp.net asp.net

How to return raw string with ApiController?


You could have your Web Api action return an HttpResponseMessage for which you have full control over the Content. In your case you might use a StringContent and specify the correct content type:

public HttpResponseMessage Get(){    return new HttpResponseMessage()    {        Content = new StringContent(            "<strong>test</strong>",             Encoding.UTF8,             "text/html"        )    };}

or

public IHttpActionResult Get(){    return base.ResponseMessage(new HttpResponseMessage()    {        Content = new StringContent(            "<strong>test</strong>",             Encoding.UTF8,             "text/html"        )    });}


Another possible solution. In Web API 2 I used the base.Content() method of APIController:

    public IHttpActionResult Post()    {        return base.Content(HttpStatusCode.OK, new {} , new JsonMediaTypeFormatter(), "text/plain");    }

I needed to do this to get around an IE9 bug where it kept trying to download JSON content. This should also work for XML-type data by using the XmlMediaTypeFormatter media formatter.

Hope that helps someone.


Just return Ok(value) won't work, it will be threated as IEnumerable<char>.

Instead use return Ok(new { Value = value }) or simillar.