我目前正在构建自己的WCF编码器来解析我的消息。我想动态更改我发送回复时分配的内容类型,但我无法理解他正在寻找的内容。
他是使用CustomTextEncoder.ContentType还是innerencoder的内容类型? 我如何强迫他发送回复#34; 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";
...
}
}
不幸的是,当我发送消息时,他仍在分配我的编码器的默认值...
答案 0 :(得分:1)
是的,您可以覆盖编码器中的内容类型以控制发送的内容。然后,您可以选择是否要委托内部编码器或提供自己的值。
public override string ContentType
{
get
{
//return this.inner.ContentType;
//return "text/xml";
}
}
答案 1 :(得分:1)
似乎无法更改入站请求的内容类型,我的问题是通过使用消息 检查器修复的,其中我指定了我想要的内容类型。 (这link帮了我)
相关提示 - 来自编码器的ACK未通过Message Inspector,因此它使用ContentType属性。