WCF自定义编码器-在运行时分配消息内容类型
本文关键字:消息 类型 分配 运行时 自定义 编码器 WCF | 更新日期: 2023-09-27 18:17:34
我目前正在构建自己的WCF编码器,将解析我的消息。我想动态地改变当我发送回复时分配的内容类型,但我不能得到我的头在哪里寻找它。
是否使用CustomTextEncoder。是ContentType还是innerencoder的内容类型?我怎样才能强迫他将响应发送为"文本/xml"或"应用程序/soap+xml"?
提前谢谢你。
EDIT -只是为了澄清我需要在自定义编码器的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";
...
}
}
不幸的是,当我发送我的消息,他仍然分配我的编码器的默认值…
是的,您可以在编码器中覆盖ContentType来控制正在发送的内容。然后,您可以选择是否要委托给内部编码器或提供自己的值。
public override string ContentType
{
get
{
//return this.inner.ContentType;
//return "text/xml";
}
}
似乎不能改变入站请求的内容类型,我的问题是通过使用消息检查器我分配我想要的内容类型来解决的。(这个链接帮助了我)
很高兴知道 -来自编码器的ack不通过消息检查器,所以它使用ContentType-property.