2010-01-28 5 views
7

내 컴퓨터에서 개인 큐를 만들고 프로젝트를 실행 한 NetMsmq 바인딩을 사용하여 WCF 서비스를 만들었습니다. 이것은 잘 작동하며 WCF 서비스가 시작되고 디버깅 환경의 대기열을 사용하여 메시지에 액세스합니다. 이제는 Windows 서비스를 사용하여 서비스를 호스트하고 싶었고 새 프로젝트와 Windows 설치 프로그램도 만들었습니다.이 서비스는 로컬 시스템 계정에서 실행됩니다. 그런 다음 명령 프롬프트를 통해 InstallUtil 명령을 사용하여이 Windows 서비스를 설치하려고했습니다.Msmq 및 WCF 서비스

There was an error opening the queue. Ensure that MSMQ is installed and running, the queue exists and has proper authorization to be read from. The inner exception may contain additional information. 
Inner Exception System.ServiceModel.MsmqException: An error occurred while opening the queue:Access is denied. (-1072824283, 0xc00e0025). The message cannot be sent or received from the queue. Ensure that MSMQ is installed and running. Also ensure that the queue is available to open with the required access mode and authorization. 
    at System.ServiceModel.Channels.MsmqQueue.OpenQueue() 
    at System.ServiceModel.Channels.MsmqQueue.GetHandle() 
    at System.ServiceModel.Channels.MsmqQueue.SupportsAccessMode(String formatName, Int32 accessType, MsmqException& msmqException) 

사람이 위의 문제에 대한 해결 방안을 제시 할 수 : 설치가 일어나고 서비스 호스트 개방 동안 때, 나는 예외 말을 얻을? 큐에 대한 권한과 Windows 서비스에 대한 권한이 누락 되었습니까? 그렇다면이 권한을 어디에 추가해야하는지 제안 할 수 있습니까?

답변

4

예, 권한 문제 인 것 같습니다.

서버 관리자에서 개인 큐를 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오. 보안 탭으로 가서 로컬 시스템 계정에 대한 올바른 권한이 있는지 확인하십시오.

Nicholas Allen의 기사에서 확인할 수 있습니다. Diagnosing Common Queue Errors. 저자는 오류 코드 0xC00E0025를 사용 권한 문제로 정의합니다.

+0

답장 Daniel에 대한 고맙습니다. 로컬 시스템 계정이라고하는 목록에있는 컴퓨터 계정에 대한 모든 관련 권한을 부여하려고 시도했습니다. 하지만 아직 같은 오류가 발생합니다. 생성 된 비공개 대기열에는 소유자로서 내 도메인 로그인이 있습니다. 나는 모든 권한을 설정할 필요가있다. 다른 가능한 권한이 누락 된 경우 제안 할 수 있습니까? – Sowmya

+0

Sowmya, 작동 시키셨습니까? 그렇지 않으면이 링크를 확인하십시오. http://beyondrelational.com/blogs/ibhadelia/archive/2011/06/21/an-error-occurred-while-opening-the-queue-access-is-denied-msmq-exception. aspx – IBhadelia

7

톰 홀 랜더 (Tom Hollander)는 WCF의 MSMQ 사용에 관한 훌륭한 3 부작 블로그 시리즈를 가지고 있습니다.

은 아마 당신은 어딘가에 언급 한 문제에 대한 해결책을 찾을 수 있습니다!

+1

+1 멋진 링크, 건배. – x0n

+0

참고 :이 답변의 링크가 작동하지 않습니다 ... – Nova

2

같은 문제가 발생했습니다. 해결책은 다음과 같습니다.

"내 컴퓨터"-> 관리를 마우스 오른쪽 버튼으로 클릭하십시오. 컴퓨터 관리 창에서 "서비스 및 응용 프로그램 -> 메시지 대기열 ->"대기열 "로 가서 대기열 및 액세스 속성을 선택하십시오. ur WCF 응용 프로그램을 실행하는 사용자를 추가하고 모든 액세스 권한을 부여하십시오. 이렇게하면 문제가 해결됩니다.

0

서비스가 대기열을 찾지 못하게 될 수 있습니다. 큐 이름은 엔드 포인트 주소와 정확히 일치해야합니다.

예 :

net.msmq : 로컬 큐

개인 $의 \의 WF에 //localhost/private/wf.listener_srv/service.svc

점. listener_srv \ service.svc

큐 이름과 끝 점이 서로에 따르면, 대부분의 경우 IIS pool에 정의 된 자격 증명은 대기열에 대한 액세스 권한을 부여하지 않습니다.