【发布时间】:2011-10-05 04:34:52
【问题描述】:
我正在创建一个 REST Web 服务,该服务通过使用 DataContractSerializer 序列化 .NET 对象来返回 XML 文档。它可以很好地返回文档,例如:
<?xml version="1.0" encoding="utf8" ?>
<patient xmlns="http://stackoverflow.com/example">
.....
</patient>
使用这样的代码:
Message MyRestMethod()
{
Patient patientObject = new Patient() {Name="Mickey Mouse"};
Message message = WebOperationContext.Current.CreateXmlResponse<Patient>(patientObject);
return message;
}
但有时,Web 服务由 Web 浏览器使用,因此如果它返回这样的文档会更好:
<?xml version="1.0" encoding="utf8" ?>
<?xml-stylesheet type="text/xsl" href="/stylesheet/format.xsl" ?>
<patient xmlns="http://stackoverflow.com/example">
.....
</patient>
我已经进行了一些实质性的挖掘,并且几乎可以通过派生我自己的消息并覆盖 OnWriteBodyContents() 来访问 XmlDictionaryWriter 来做到这一点。此时,我发现 WriteProcessingInstruction(name, text) 无法编写 xml-stylesheet 指令。
更重要的是,接收 xml-stylesheet 处理指令的 WCF 客户端代码也会爆炸,因此即使您在字符级别“破解”流以添加它,也不需要将其发送到 WCF 客户端...
如果有人有更好的建议,请告诉我...
【问题讨论】:
标签: wcf serialization