从C#发送到MSMQ队列时,CS0122错误的原因和解决方案是什么?

Eri*_*ick 1 c# msmq

使用MessageQueue(string queuePath)构造函数创建System.Messaging.MessageQueue后,尝试使用MessageQueue.Send(obj)导致"无法生成临时类(result = 1)"异常,并附加文本:'error CS0122:'System .__ ComObject'由于其保护级别而无法访问'.

队列本身具有给予每个人的完全控制权.当查询MessageQueue对象的读写权限时,它返回SendAndReceive.导致此错误的原因是什么?如何解决?

Han*_*ant 5

哦快乐,运行时错误和编译时错误混合在一起.MessageQueue使用XML序列化来序列化非Message的对象.如果你没有使用sgen.exe在构建时创建一个序列化程序集(你真的应该),那么它会在运行时生成程序集.

显然失败,无论您传递给Send()的对象是什么,都不支持XML序列化.从错误消息判断,这可能是因为它不是一个简单的.NET类.通过使它成为一个简单的.NET类来解决它,一个幸存XmlSerializer.Serialize()并返回.