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

是的,您可以覆盖编码器中的 ContentType 来控制发送的内容。然后您可以选择是要委托给内部编码器还是提供您自己的值。

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

似乎无法更改入站请求的内容类型,我的问题已通过使用消息 检查器解决,我在其中分配了我想要的内容类型。(这个链接帮助了我)

很高兴知道- 来自编码器的 ACK 没有通过 Message Inspector,因此它使用 ContentType-property。

于 2014-08-20T07:35:29.680 回答