WCF CustomBehavior为上下文设置JSON / stream

时间:2016-08-18 15:16:41

标签: json wcf stream

与此问题类似,我需要发送回JSON。 WCF ResponseFormat For WebGet

但我正在从BizTalk 2010 SendPort适配器调用的WCF行为中工作。

我在这个方法里面:

public object BeforeSendRequest(ref Message request, IClientChannel channel)

所以我有消息和我可以操作的频道。

我认为方向是这样的:

1)//WebOperationContext.Current.OutgoingResponse.ContentType =“text / plain”;

2)OperationContext.Current ....东西 - 但我不太清楚对象模型。

我目前正在使用MemoryStream:

byte[] byteArrayJSON = Encoding.UTF8.GetBytes(strJSON);
MemoryStream memStreamJSON = new MemoryStream(byteArrayJSON); 
//WebOperationContext.Current.OutgoingResponse.ContentType = “text/plain”;
Message newMessage = Message.CreateMessage(MessageVersion.None, "", memStreamJSON);
... 
request = newMessage;  // substitute my new message for the original one.

我的标题有:

Content-Type: application/json
Accept: application/json

1 个答案:

答案 0 :(得分:0)

我认为这些是我需要的,但仍在测试......

WebBodyFormatMessageProperty bodyFormat = new WebBodyFormatMessageProperty(WebContentFormat.Json);
newMessage.Properties.Add(WebBodyFormatMessageProperty.Name, bodyFormat);

看起来现在我应该传递XML,这会导致序列化发生?我现在正处理下一个错误:

System.ArgumentException: Encountered unexpected namespace 'http://schemas.datacontract.org/2004/07/System.IO'. The namespace must be empty.
Parameter name: ns

尝试“原始”:

WebBodyFormatMessageProperty bodyFormat = new WebBodyFormatMessageProperty(WebContentFormat.Json);
newMessage.Properties.Add(WebBodyFormatMessageProperty.Name, bodyFormat);