1

現在、メッセージを解析する独自の WCF エンコーダーを構築しています。返信を送信するときに割り当てられるコンテンツ タイプを動的に変更したいのですが、彼が探している場所がわかりません。

彼は CustomTextEncoder.ContentType またはインナーエンコーダーのコンテンツ タイプを使用していますか? 「text/xml」または「application/soap+xml」として応答を送信するように強制するにはどうすればよいですか?

前もって感謝します。

編集-カスタムエンコーダーのWriteMessageメソッドで決定する必要があることを明確にするために。要求されたコンテンツ タイプを保持する文字列プロパティを使用していますが、彼はそれを正しく行っていません。

public class MyEncoder : MessageEncoder
{
    private string _contentType = "application/soap+xml";

    public override string ContentType
    {
        get
        {
            return _contentType;
        }
    }

    public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
    {
        ...

        if (_MY_CONDITION_HERE_)
        {
            _contentType = "multipart/related";
        }
        else
            _contentType = "application/soap+xml";

        ...
     }
}

残念ながら、メッセージを送信すると、彼はまだエンコーダーのデフォルト値を割り当てています...

4

2 に答える 2

1

インバウンド要求のコンテンツ タイプを変更できないようです。私の問題は、必要なコンテンツ タイプを割り当てるMessage Inspectorを使用して修正されました。(このリンクは私を助けました)

知っておくと便利 - エンコーダーからの ACK は Message Inspector を通過しないため、ContentType プロパティを使用します。

于 2014-08-20T07:35:29.680 に答える
1

はい、エンコーダーの ContentType をオーバーライドして、送信内容を制御できます。次に、内部エンコーダーに委譲するか、独自の値を提供するかを選択できます。

public override string ContentType
{
    get
    {
        //return this.inner.ContentType;
        //return "text/xml";
    }
}
于 2014-08-13T11:54:49.410 に答える