MSMQ -当向另一个队列发送消息时,无法访问已关闭的流

本文关键字:访问 另一个 队列 消息 MSMQ | 更新日期: 2023-09-27 18:08:37

我正在从请求队列中读取消息,处理请求,然后将处理请求的结果放在响应队列中。如果处理失败,我将尝试使用用于读取原始消息的相同事务将请求消息移动到失败的请求队列中。

failedRequestQueue.Send(message, transaction);
transaction.Commit();

然而,调用Send失败,返回"Cannot access a closed Stream "。

MSMQ -当向另一个队列发送消息时,无法访问已关闭的流

当读取原始请求消息的BodyStream时,我使用了在using块中创建的StreamReader,这反过来关闭了消息的BodyStream,防止它从请求队列移动到失败请求队列时被读取。从StreamReader中删除using语句修复了这个问题。