使用 C# 的 MSMQ 的队列路径
Queue Path for MSMQ using C#
我似乎不知道如何格式化队列路径。我以前从未使用过 MSMQ。我设置了它,创建了一个名为 test 的私有队列,并想尝试发送一条消息。
我正在使用 Visual Studio、ASP.NET、网络表单、C#。
protected void Page_Load(object sender, EventArgs e)
{
SendPrivateTx();
}
public void SendPrivateTx()
{
MessageQueue rmQ = new MessageQueue("jsmith528/private$/test");
rmQ.Send("message", MessageQueueTransactionType.Single);
}
这是我正在使用的代码。我在新 MessageQueue 之后的行中收到一条错误消息:
An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code
Additional information: Length cannot be less than zero.
我确定这是没有正确路径的结果。我正在使用 Windows 10.
您的本地专用队列应按原样格式化:
@".\Private$\TextsQueue"
这是我的 "StartQueue" 的示例:
List<ServiceController> services = ServiceController.GetServices().ToList();
ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ");
if (msQue != null)
{
if (msQue.Status == ServiceControllerStatus.Running)
{
// It is running.
//Q Creation
if (MessageQueue.Exists(@".\Private$\TextsQueue"))
{
textsQueue = new System.Messaging.MessageQueue(@".\Private$\TextsQueue");
}
else
textsQueue = MessageQueue.Create(@".\Private$\TextsQueue");
textsQueue.Purge();
textsQueue.ReceiveCompleted += new
ReceiveCompletedEventHandler(QueueReceiveCompleted);
}
我似乎不知道如何格式化队列路径。我以前从未使用过 MSMQ。我设置了它,创建了一个名为 test 的私有队列,并想尝试发送一条消息。
我正在使用 Visual Studio、ASP.NET、网络表单、C#。
protected void Page_Load(object sender, EventArgs e)
{
SendPrivateTx();
}
public void SendPrivateTx()
{
MessageQueue rmQ = new MessageQueue("jsmith528/private$/test");
rmQ.Send("message", MessageQueueTransactionType.Single);
}
这是我正在使用的代码。我在新 MessageQueue 之后的行中收到一条错误消息:
An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code
Additional information: Length cannot be less than zero.
我确定这是没有正确路径的结果。我正在使用 Windows 10.
您的本地专用队列应按原样格式化:
@".\Private$\TextsQueue"
这是我的 "StartQueue" 的示例:
List<ServiceController> services = ServiceController.GetServices().ToList();
ServiceController msQue = services.Find(o => o.ServiceName == "MSMQ");
if (msQue != null)
{
if (msQue.Status == ServiceControllerStatus.Running)
{
// It is running.
//Q Creation
if (MessageQueue.Exists(@".\Private$\TextsQueue"))
{
textsQueue = new System.Messaging.MessageQueue(@".\Private$\TextsQueue");
}
else
textsQueue = MessageQueue.Create(@".\Private$\TextsQueue");
textsQueue.Purge();
textsQueue.ReceiveCompleted += new
ReceiveCompletedEventHandler(QueueReceiveCompleted);
}