WCF десериализация пытается преобразовать параметр xml в объект, когда я просто хочу строку - PullRequest
1 голос
/ 15 апреля 2011

Я пишу заглушку службы WCF, чтобы имитировать существующую службу VB6.Заглушка должна принимать один параметр, который является строкой, выполнять некоторую логику и возвращать строку.

У меня возникла проблема, связанная со следующим методом в контракте на обслуживание

[OperationContract]
[WebInvoke(Method = "POST",
    UriTemplate = "lookup")]
string LookupItem(string requestXml);

Когда я отправляю сообщение в fiddler, я получаю сообщение об ошибке

Сервер обнаружил ошибку при обработке запроса.Сообщение об исключении: «Невозможно десериализовать тело XML с корневым именем« XmlRoot »и корневым пространством имен» (для операции «LookupItem» и контракта («IServiceStub», «http://tempuri.org/')) с использованием DataContractSerializer. Убедитесь, что тип, соответствующий XML, являетсядобавлен в коллекцию известных типов службы. '.

Не пытается ли WCF десериализовать мой XML в объект, даже если я этого не хочу? Строка отправляется как текст /xml, потому что служба, которая имитирует, должна получать POST в виде text / xml. Что-то мне не хватает?

1 Ответ

0 голосов
/ 15 апреля 2011

преодолел это со следующим:

public Stream LookupItem(Message requestXml)
    {
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        string responseXml = "<whatever />";
        return new MemoryStream(Encoding.UTF8.GetBytes(responseXml ));
    }
...