.net – 如何在WCF中为[WebGet]方法发出裸XML?

如何定义[OperationContract] [WebGet]方法来返回存储在字符串中的 XML,而不使用HTML编码字符串?

该应用程序正在使用WCF服务返回已存储为字符串的XML / XHTML内容. XML通过[DataContract]不对应于任何特定的类.它是由XSLT消费的.

[OperationContract]
[WebGet]
public XmlContent GetContent()
{
   return new XmlContent("<p>given content</p>");
}

我有这个班:

[XmlRoot]
public class XmlContent : IXmlSerializable
{
    public XmlContent(string content)
    {
        this.Content = content;
    }
    public string Content { get; set; }

    #region IXmlSerializable Members

    public System.Xml.Schema.XmlSchema GetSchema()
    {
        return null;
    }

    public void ReadXml(XmlReader reader)
    {
        throw new NotImplementedException();
    }

    public void WriteXml(XmlWriter writer)
    {

        writer.WriteRaw(this.Content);
    }
    #endregion
}

但是当序列化时,有一个根标签包装给定的内容.

<XmlContent>
  <p>given content</p>
</XmlContent>

我知道如何更改根标签的名称([XmlRoot(ElementName =“div”)]),但是如果可能,我需要省略根标记.

我也尝试过[DataContract]而不是IXmlSerializable,但似乎不那么灵活.

返回一个XmlElement.你不需要IXmlSerializable.你不需要一个包装类.

示例服务接口:

namespace Cheeso.Samples.Webservices._2009Jun01
{
    [ServiceContract(Namespace="urn:Cheeso.Samples.Webservices" )]
    public interface IWebGetService
    {
        [OperationContract]
        [WebGet(
                BodyStyle = WebMessageBodyStyle.Bare,RequestFormat = WebMessageFormat.Xml,ResponseFormat = WebMessageFormat.Xml,UriTemplate = "/Greet/{greeting}")]
        XmlElement Greet(String greeting);
    }
}

服务实施:

namespace Cheeso.Samples.Webservices._2009Jun01
{
    [ServiceBehavior(Name="WcfWebGetService",Namespace="urn:Cheeso.Samples.WebServices",IncludeExceptionDetailInFaults=true)]

    public class WcfWebGetService : IWebGetService
    {
        public XmlElement Greet (String greeting)
        {
            string rawXml = "<p>Stuff here</p>";
            XmlDocument doc = new XmlDocument();
            doc.Load(new System.IO.StringReader(rawXml));
            return doc.DocumentElement;
        }
    }
}

另见这个类似的问题,但是没有WebGet的扭曲:
serializing-generic-xml-data-across-wcf-web-service-requests.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


xml怎么加入图片路径
rss源错误怎么解决
文件后缀xml是什么意思
xml格式电子发票怎么获取
xml格式是什么意思
rss是什么意思啊
xml格式电子发票怎么打开
rss订阅源是什么意思
rss源是什么
xml注释怎么写
php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类