Удивительно, но int и string по умолчанию не имеют MediaTypeFormatter, поэтому он не знает, как обрабатывать эти типы.
Единственные типы, которые он умеет обрабатывать «из коробки», - это JSON, XML и данные, закодированные в форме url.Эта цитата взята с официального сайта asp.net: http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
В веб-API тип мультимедиа определяет, как веб-API сериализует и десериализует тело сообщения HTTP.Имеется встроенная поддержка XML, JSON и данных, закодированных в форме, и вы можете поддерживать дополнительные типы носителей, написав средство форматирования носителей.
Теперь вы можете «написать» свой собственный MediaTypeFormatter (ссылка, которую я предоставил, покажет вам, как это сделать), но поскольку веб-интерфейс asp.net все еще находится в бета-версии, у меня возникли большие проблемы с использованием пользовательских средств форматирования для простых типов, таких как строки.Я обнаружил, что гораздо проще просто обернуть любое значение, которое вы хотите поместить в xml / json, и оно будет автоматически десериализовано.См. Мой пост здесь для получения дополнительной информации об этом, Когда HTTP-POST имеет тело, параметр url имеет значение null
Для вашего конкретного примера ваше тело PUT будет выглядеть так:
<message>
<id>6</id>
</message>
Затем обязательно установите тип содержимого вашего http-запроса на text / xml (или application / json, если вы решите его использовать).И он должен очень точно сериализоваться в переменную.