您好,
我在WCF中收到以下异常:此消息不支持该操作,因为它已被复制。
我正在使用CustomMessageInspector,这就是Im处理传入消息的方式:
private long DetermineAndLogMessageDiagnostics(Message message)
{
MessageBuffer buffer;
Message bufferMessage;
if (!message.IsFault && !message.IsEmpty)
{
buffer = message.CreateBufferedCopy(Int32.MaxValue);
bufferMessage = buffer.CreateMessage();
var messageBodyReader = bufferMessage.GetReaderAtBodyContents();
var messageBody = messageBodyReader.ReadOuterXml();
double bodySizeInBytes = Encoding.UTF8.GetByteCount(messageBody);
return long.Parse(Math.Ceiling(bodySizeInBytes / 1024).ToString());
}
return 0;
}
根据MSDN页面,这是这样做的方法(CreateBufferedCopy)我仍然得到异常。如果我评论这个方法一切正常吗?
有什么想法吗?
答案 0 :(得分:4)
这是因为消息的生命周期仅持续一次使用。一旦查看了邮件内容或将内容复制到某处,就无法再次阅读该邮件。
private long DetermineAndLogMessageDiagnostics(Message message)
{
buffer = message.CreateBufferedCopy(Int32.MaxValue);
// Do something with the copied message
reply = buffer.CreateMessage();
buffer.Close();
}