当我只想要字符串时,WCF反序列化试图将xml参数转换为对象

时间:2011-04-15 11:26:04

标签: c# wcf deserialization

我正在编写一个WCF服务存根来“模仿”现有的VB6服务。存根需要接受一个字符串的参数,执行一些逻辑并返回一个字符串。

我遇到的问题是在服务合同上给出以下方法

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

当我在fiddler中发布消息时,我收到错误

  

服务器遇到错误   处理请求。例外   消息是'无法反序列化XML   具有根名称'XmlRoot'和   root namespace''(用于操作   'LookupItem'和合同   ( 'IServiceStub',   'http://tempuri.org/'))使用   DataContractSerializer的。确保这件事   与XML对应的类型是   添加到已知类型的集合中   服务。'。

WCF是否尝试将我的XML反序列化为对象,即使我不想要它?字符串以text / xml格式发送,因为它模仿的服务必须以text / xml的形式接收POST。有什么我想念的吗?

1 个答案:

答案 0 :(得分:0)

用以下内容克服了这个问题:

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