WCF响应遗漏了

我终于开始使用WCF,但我遇到了另一个问题.发回的响应不包括标头

<?xml version="1.0" encoding="utf-8" ?>

我的服务合同

 [ServiceContract]
    public interface IService1
    {
        // you can have optional parameters by simply specifying them and they will return null if there is nothing in there
        [WebGet(UriTemplate="testing={value}", ResponseFormat = WebMessageFormat.Xml)]
        [OperationContract]
        XElement GetData(string value);
    }


 [XmlSerializerFormat]
    public class Service1 : IService1
    {
        public XElement GetData(string value)
        {
            return new XElement("Somename", value); 
        }
   }

返回此(3是指定的值)

<Somename>3</Somename>

是否也可以轻松地将响应包装在根元素中?像< response>< / response>?

最佳答案 respons调用GetData方法的结果是您在方法中返回的内容.如果你想要一个包装器,那么返回如下内容:

[XmlSerializerFormat]
public class Service1 : IService1
{
    public XElement GetData(string value)
    {
        return new XElement("response",
                       new XElement("Somename", value));
    }
}

编辑:

要添加XML声明(实际上可能不是一个好主意,但你知道最好),可以这样做:

var doc = new XDocument(
            new XElement("response",
                           new XElement("Somename", value)));

doc.Declaration = new XDeclaration("1.0", "utf-8", "true");

return doc.Root;
点赞