1

データを xml でラップする必要がある WebGet と WebInvoke を使用して WCF サービスを公開しています。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の場合、BINARY DATA部分が本当に欲しいだけです。私は WebGet と一緒に暮らすことができます。クライアントが WebInvoke を使用してリクエストを xml でラップすることなく HTTP POST を実行できるようにする方法について、誰か提案はありますか? ありがとう。

4

1 に答える 1

0

質問を完全に理解しているかどうかはわかりません。POST されるデータを XML でラップする必要があると述べていますが、XML でラップせずにデータを POSTED にする方法を尋ねます。私の最初の答えは、パラメーター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 に答える