【发布时间】:2014-07-03 09:29:51
【问题描述】:
我在运行 xp 的远程机器 (10.3.35.3) 上有一个非事务性专用队列(错误)。我正在尝试从运行 Windows 2008 的机器上读取消息。 我正在使用“FormatName:Direct=tcp:10.3.35.3\Private$\errors”来访问队列。
我可以连接到它。 我可以偷看。 我有一个用于 ReceiveCompleted 事件的 eventHandler,一旦从队列接收到消息,它就会被触发,但是当我尝试将“源”对象转换为 messageQueue 时。
Friend Sub MyReceiveCompleted(ByVal [source] As [Object], ByVal asyncResult As ReceiveCompletedEventArgs)
Dim objMessageQueue As MessageQueue
Try
objMessageQueue = New MessageQueue
objMessageQueue = CType([source], MessageQueue)
此时,当我尝试将“源”对象转换为 MessageQueue 对象时,出现异常“指定的格式名称不支持请求的操作。例如,无法删除直接队列格式名称。”。
异常的完整堆栈跟踪
at System.Messaging.MessageQueue.GenerateQueueProperties()
at System.Messaging.MessageQueue.get_QueuePath()
at System.Messaging.MessageQueue.get_QueueName()
at MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
我尝试了不同的格式名称,但没有运气。谁能解释一下这里有什么问题?我还需要使用其他格式名称吗?我们可以事先知道队列会喜欢什么格式名吗?
注意:在here 有人说要改用 id,当我在队列的属性中查找 id 时,我在“Type ID:”字段中得到全 0。
【问题讨论】: