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