Dun*_*can 18 xml wcf serialization namespaces
我正在使用WCF将普通的旧XML(POX)文档返回给调用者.我正在使用XML Serializer格式化程序将对象转换为XML.
在返回的文档中,我为XML Schema和实例提供了一些无关的xml命名空间引用(在ASMX版本中没有).我在Web上看到了各种不应删除的参数,我不会为了返回纯XML文档而购买这些参数.
从WCF中返回的XML文档中删除这些xmlns引用的最简单方法是什么?
签名如下:
public ResponseInfo Process(string input) {
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*ock 19
您可以通过将DataContract属性的Namespace参数设置为空字符串来删除XML命名空间,如下所示:
[DataContract(Namespace = "")]
public class ResponseInfo
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助...
我假设你正在尝试而不是在xml的开头得到这样的东西:
<ResponseInfo
xmlns="http://schemas.datacontract.org/2004/07/ResponseInfo"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" >
Run Code Online (Sandbox Code Playgroud)
你想要的只是:
<ResponseInfo>
Run Code Online (Sandbox Code Playgroud)
可悲的是,我还没有看到一个简单的方法来删除这些领域.我正在谷歌搜索解决方案,大多数删除它的选项需要创建自己的消息检查器或您自己的编码器.
在我在 WCF RESTful 入门套件之前编写的 RESTful WCF 服务中,我执行了以下操作,这给了我良好、干净的结果。
首先,确保设置了 webHttp 端点行为:
<endpointBehaviors>
<behavior name="Web">
<webHttp/>
</behavior>
</endpointBehaviors>
Run Code Online (Sandbox Code Playgroud)
您的端点应如下所示(为了简单起见,减去合同):
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="Web" />
Run Code Online (Sandbox Code Playgroud)
我的服务合同中有以下操作合同:
[WebGet(UriTemplate="tasks", ResponseFormat=WebMessageFormat.Xml )]
[OperationContract]
Task[] GetTasks();
[WebGet(UriTemplate="tasks/{id}", ResponseFormat=WebMessageFormat.Xml)]
[OperationContract]
Task GetTask(string id);
Run Code Online (Sandbox Code Playgroud)
服务实现本身没有什么特别之处。您可以尝试更改 WebMessageFormat,但枚举中唯一的其他项目是“json”。
| 归档时间: |
|
| 查看次数: |
25879 次 |
| 最近记录: |