与此问题类似,我需要发送回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
答案 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);