1

我使用 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>

我真的只想要 BINARY DATA 部分,尤其是对于 WebInvoke。我可以接受 WebGet 的现状。有没有人对我如何允许客户端能够使用 WebInvoke 进行 HTTP POST 而不需要将请求包装在 xml 中有任何建议?谢谢。

4

1 回答 1

0

我不确定我是否完全理解这个问题。您声明您需要将要发布的数据包装在 XML 中,但随后询问如何在不将其包装在 XML 中的情况下发布数据。我最初的答案是WebInvoke使用参数声明您的服务方法BodyStyle

[OperationContract]
[WebInvoke(Uri="SomeMethod?x={foo}&y={bar}", BodyStyle=WebMessageBodyStyle.WrappedRequest)]
public string SomeMethod(string foo, string bar) {
...
}

这是BodyStyle的 MSDN 文档——您可以将其设置为 Bare(响应和请求均未包装)、Wrapped 或 WrappedRequest/Response。

我希望这有帮助。

于 2010-07-27T01:53:38.263 回答