你好,
我在 WCF 中得到以下异常:This message cannot support the operation because it has been copyed.
我正在使用 CustomMessageInspector,这就是我处理传入消息的方式:
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),但我仍然遇到异常。如果我将此方法注释掉,一切正常吗?
有什么想法吗?
最佳答案
这是因为一条消息的生命周期只有一次使用。查看邮件内容或将内容复制到某处后,您将无法再次阅读该邮件。
private long DetermineAndLogMessageDiagnostics(Message message)
{
buffer = message.CreateBufferedCopy(Int32.MaxValue);
// Do something with the copied message
reply = buffer.CreateMessage();
buffer.Close();
}
关于.net - 此消息无法支持操作,因为它已被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518941/