2

RESTful アプローチを使用して Web サービスを構築しており、WCF WebHttp API (.NET v4) を使用しています。一部のレガシー機能を満たすには、POST を介して生の XML メッセージを受け入れて処理する必要があります。たとえば、私のメソッドの 1 つは次のようになります。

[WebInvoke(UriTemplate = "Hello", Method = "POST")]
public Message ProcessMessage(string xmlMessage)
{
    if (String.IsNullOrWhiteSpace(xmlMessage))
    {
        return WebOperationContext.Current.CreateXmlResponse(ProcessingFailedReply);
    }
    var message = XElement.Parse(xmlMessage);
    return WebOperationContext.Current.CreateXmlResponse(ProcessingSuccessfullReply);
}

ただし、xml を「/Hello」に POST しようとするたびに、形式が無効であり、具体的にエンコードされた文字列が必要であるというメッセージが表示されます。API は標準スキーマを使用して自動的に xmlMessage をシリアライズしていると思います。ヘルプ (「/help」) にアクセスすると、xmlMessage のサンプル形式が表示されます。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">String content</string>

このシナリオで、POST されたリクエストを raw として許可して処理するにはどうすればよいですか? API を調べたところ、関連する唯一のクラス ( WebOperationContext.Current.IncommingRequest ) には生のメッセージを取得するメソッドがありません...

ありがとうZ...

4

2 に答える 2

3

XElement 型の入力パラメーターを作成すると、任意の方法で XML を照会できます。

于 2011-07-05T15:26:00.577 に答える
3

Maurice からの提案 (XML コンテンツで機能) に加えて、任意のコンテンツ タイプで raw バイトが必要な場合は、Stream パラメーターを使用できます (詳細については、http://blogs.msdn.com/b/carlosfigueira/を参照してください)。 archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx ) であり、要求本文全体がそのパラメーターにマップされます。

于 2011-07-05T16:43:01.210 に答える