나는 프로듀서와 소비자가 모두 같은 컴퓨터에있을 때 매우 잘 작동하는 MSMQ를 사용하는 응용 프로그램을 가지고 있습니다.Message Queue에서 메시지를 보낸 위치는 어디입니까?
어제, 처음으로 별도의 컴퓨터에서 실행되는 다른 제작자를 만들려고했습니다. 큐는 개인 큐, 그리고 이전에, 양쪽 내가 원격 시스템에서이 큐를 참조하는 여러 가지 방법을 시도
string strQueueName = ".\Private$\MyQueue";
로 참조. 내 서버 이름은 그래서 난
string strQueueName = "groucho\Private$\MyQueue";
을 시도했지만이 일관되게 "잘못된 큐 경로 이름"예외를 던졌다 "그루"입니다. 내가 할로 이 메시지가 표시되지, 중,
string strQueueName = "FORMATNAME:DIRECT =OS:grouch\\private$\\SDVQueue";
이 더 이상 예외가 발생하지만 작동하지 않습니다
동료 개발자는 내가 예외를 방지 다음을 시도 제안 대기열에 있습니다.
서버는 Windows Server 2008 R2입니다. "Everyone"이 Receive and Peek는 가능하지만 Send는 할 수 없지만 "Send"를 추가하려고하면 에 "보안 설명자가 설정 될 수 없습니다."라는 오류 대화 상자가 나타납니다. , 오류 : 액세스가 거부되었습니다. " I do이이 상자에 관리자 권한이 있습니다.
나는 모든 종류의 보안이 있다는 것을 알기 때문에 보안 문자가 있지만 보낸 사람이나 호스트 컴퓨터의 이벤트 로그에는 오류가 표시되지 않습니다.
보안 문제인 경우 문제점을 어떻게 확인할 수 있습니까?
감사합니다. 여기
는 전체 테스트 코드입니다 : 당신은 하나 개의 서버에서 메시지를 보낸 다음 아웃 바운드 큐를 보면using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Messaging;
namespace RemoteQueue
{
class Program
{
static void Main(string[] args)
{
string name = "FORMATNAME:DIRECT =OS:groucho\\private$\\SDVQueue";;
string input = null;
MessageQueue queue = null;
try
{
queue = new MessageQueue(name);
string key = "key";
for (int i = 0; i < 200; i++)
{
Message msgToSend = new Message();
string value = "value_" + i;
msgToSend.Body = string.Format("{0},{1}", key, value);
Console.WriteLine("Sending message " + i);
queue.Send(msgToSend, "otherpart");
}
}
catch (MessageQueueException me)
{
Console.WriteLine("ERROR: caught message queue exception: " + me.Message);
}
Console.WriteLine("Type any key to exit...");
input = Console.ReadLine();
}
}
}
죽은 편지 큐의 메시지입니다 큐의 '모두를 완벽하게 제어'를 설정
시도? –
방금 확인했는데 데드 - 레터 큐에 아무것도 없습니다. –