OperationFormatter обнаружил недопустимое тело сообщения - PullRequest
1 голос
/ 29 января 2009

Я создаю клиента WCF для внешнего REST API, но получаю следующую ошибку:

OperationFormatter обнаружил недействительное тело сообщения

Клиент правильно подключается к серверу и выполняет «публикацию», которая мне требуется, но он ожидает другой элемент ответа, в основном добавляющий «ответ» к имени Name of OperationContract, например:

OperationFormatter обнаружил недействительное тело сообщения. Ожидается найти тип узла "Элемент" с именем 'companyResponse' и пространство имен ''. Найден тип узла "Элемент" с именем 'company' и пространство имен ''

Кто-нибудь знает, как заставить его убрать требование «Ответ» для добавления к имени?

Дополнительные детали (я добавил ReplyAction, но это не имело значения):

[OperationContract(Name="company", Action = "company", ReplyAction = "company")]
        [WebInvoke(
        Method = "POST",
        BodyStyle = WebMessageBodyStyle.WrappedResponse,
        ResponseFormat = WebMessageFormat.Xml,
        UriTemplate = "companies.xml"
        )]
        Company AddCompany(Company company);

Ответы [ 2 ]

2 голосов
/ 18 февраля 2009

BodyStyle в контракте на операцию было установлено на WrappedResponse . Измените BodyStyle на WebMessageBodyStyle.Bare .

Это говорит среде выполнения WCF не включать оболочку, которая является узлом XML с именем = MethodName + словом "Response"

0 голосов
/ 29 января 2009

Было бы полезно, если бы вы опубликовали определение контракта, которое вы использовали. Однако в общем случае вам придется установить свойство Name в экземпляре OperationContractAttribute, который вы присоединяете к методу в контракте, который вы пытаетесь вызвать, и, возможно, также в свойствах Action и ReplyAction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...