By default, WebAPI only binds to JSON or XML requests
(or the formats supported by whatever other media formatters you have configured). Wrapping the string in quotes will effectively turn it into a JSON payload, but you'll need to watch out for encoding issues, particularly if your string already contains quotes.
If you just want to capture the raw request body, there are other ways to do that:
Accepting Raw Request Body Content with ASP.NET Web API - Rick Strahl's Web Log[
^]
The simplest option is probably:
[HttpPost]
public async Task Post()
{
string rawRequestBody = await Request.Content.ReadAsStringAsync();
...
}