我是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();
}
}
答案 0 :(得分:1)
UnsupportedFormatNameOperation的说明是
不支持指定格式名称的请求操作。
当指定的格式名称不支持请求的操作时,消息队列将返回此错误。操作包括尝试通过指定直接格式名称来打开队列以接收消息。
所以我猜您的问题可能出在您的接收代码上。