我有使用WebGet和WebInvoke公开的WCF服务,这些服务需要将数据包装在xml中。我希望能够返回原始数据,而不需要将其包装在xml中,并且还允许客户端能够调用我的服务,而不需要将请求包装在xml中。
我使用协议缓冲区序列化数据,并将结果转换为base64String,因此WebGet响应如下所示:
<BinVehicleResp xmlns="http://schemas.datacontract.org/2004/07/NTouchServices.Binary_Types" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<BinVehicle>CgsxMjMtNDU2LTc4ORIFNDQwMDAaBUJsYWNrIgVKZXR0YVIJCJrYqoXAShAE (BINARY DATA)</BinVehicle>
</BinVehicleResp>并且WebInvoke输入必须至少看起来像这样:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> BINARY DATA </string>我真的只想要二进制数据部分,特别是对于WebInvoke。我可以接受WebGet的现状。有没有人对我如何允许客户端使用WebInvoke执行HTTP POST而不需要将请求包装在xml中有任何建议?谢谢。
发布于 2010-07-27 09:53:38
我不确定我是否完全理解了这个问题。您声明需要将POSTed格式的数据包装在XML中,但随后询问如何才能在不将数据包装在XML中的情况下发布数据。我最初的回答是使用BodyStyle参数声明您的WebInvoke服务方法:
[OperationContract]
[WebInvoke(Uri="SomeMethod?x={foo}&y={bar}", BodyStyle=WebMessageBodyStyle.WrappedRequest)]
public string SomeMethod(string foo, string bar) {
...
}以下是BodyStyle的MSDN文档--您可以将其设置为裸(既不包装响应也不包装请求)、包装或WrappedRequest/Response。
我希望这能帮到你。
https://stackoverflow.com/questions/3329581
复制相似问题