Каковы причины и решения для ошибки CS0122 при отправке в очередь MSMQ из C #? - PullRequest
1 голос
/ 22 апреля 2010

Создав System.Messaging.MessageQueue с помощью конструктора MessageQueue (string queuePath), попытка использовать MessageQueue.Send (obj) приводит к исключению «Невозможно создать временный класс (result = 1)» с дополнительным текстом. : 'ошибка CS0122:' System .__ ComObject 'недоступен из-за уровня защиты'.

Сама очередь имеет полный контроль над всеми. При запросе объекта MessageQueue на предмет разрешения на чтение и запись он возвращает SendAndReceive. Что вызывает эту ошибку и как ее устранить?

1 Ответ

5 голосов
/ 23 апреля 2010

О, радость, ошибка времени выполнения смешалась с ошибкой времени компиляции. MessageQueue использует сериализацию XML для сериализации объектов, которые не являются Message. Если вы не использовали sgen.exe для создания сборки сериализации во время сборки (вам действительно следует), то она генерирует сборку во время выполнения.

Очевидно, что это не сработает, любой объект, который вы передаете Send (), не поддерживает сериализацию XML. Судя по сообщению об ошибке, это может быть потому, что это не простой класс .NET. Решите это, сделав его простым классом .NET, выжившим после XmlSerializer.Serialize () и обратно.

...