MSMQ Remote Private:一次使用后UnsupportedFormatNameOperation

时间:2013-02-23 19:26:19

标签: c# msmq

我是MSMQ的新手并且怀疑我的队列配置错误或编程(这是一个字?)导致他们被挂起。

当一切开始时,我可以发送一条消息并且效果非常好。我可以看到(即通过该机器上的mmc)远程机器队列中的消息。然后我去访问它,我得到UnsupportedFormatNameOperation错误。如果我尝试发送另一条消息,我会在几秒前刚刚工作的send方法中得到相同的错误。

更令人沮丧的是,我的捕获是拾取异常所以我没有意识到并在其他地方寻找(浪费时间)直到我在调试器中探索队列对象。

现在,如果我在远程重置消息服务,我会丢失队列中的消息并仍然会收到相同的错误。如果我重新启动相同的结果。

在本地(开发机器)上,如果我重置消息服务,我仍然会收到错误。如果我重新启动某些东西会被回收,我可以再次发送一条消息。

在重启dev机器并在第一次运行时探索队列对象之后,我发现我收到的错误是 FIRST 时间,但它仍然会发送消息。

所以我显然做错了什么,但对于什么是无能为力的。

这是我的发送代码:

private void SendLoginMessage(...bunch of parms)
        {
            //hardcoded path? yup!!
            MessageQueue msmq = new MessageQueue(@"FormatName:DIRECT=OS:W2K8R2_SQL2K8R2\private$\best_simulator");

            try
            {
                LoginStatusMessage LgnMsg = new LoginStatusMessage()
                {
                    ...assign parms to my 
                };
                msmq.Send(LgnMsg);
            }
            catch (MessageQueueException msmqex)
            {
                MessageBox.Show(msmqex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                msmq.Close();
            }
        }

1 个答案:

答案 0 :(得分:1)

UnsupportedFormatNameOperation的说明是

  

不支持指定格式名称的请求操作。

     

当指定的格式名称不支持请求的操作时,消息队列将返回此错误。操作包括尝试通过指定直接格式名称来打开队列以接收消息。

所以我猜您的问题可能出在您的接收代码上。