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

时间:2010-04-22 19:54:36

标签: c# msmq

使用MessageQueue(string queuePath)构造函数创建了System.Messaging.MessageQueue,尝试使用MessageQueue.Send(obj)会导致“无法生成临时类(result = 1)”异常以及其他文本:'错误CS0122:'系统.__ ComObject'由于其保护级别而无法访问'。

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

1 个答案:

答案 0 :(得分:5)

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

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

相关问题