2010-01-28 9 views
7

Utworzono usługę WCF przy użyciu powiązania NetMsmq, dla którego utworzyłem prywatną kolejkę na moim komputerze i wykonałem projekt. Działa to dobrze i moja usługa WCF jest uruchomiona i uzyskuje dostęp do komunikatu za pomocą kolejki w środowisku debugowania. Teraz chciałem udostępnić usługę przy użyciu usługi Windows i dla tego samego stworzyłem nowy projekt i instalator systemu Windows (ta usługa działa w ramach lokalnego konta systemowego). Następnie próbowałem zainstalować tę usługę Windows za pomocą polecenia InstallUtil w wierszu polecenia. Gdy instalacja się dzieje i podczas otwarcia gospodarza usług, pojawia się powiedzenie wyjątek:Usługa Msmq i 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) 

Czy ktoś może sugerować ewentualne rozwiązania powyższego problemu? Czy brakuje mi uprawnień do ustawienia dla kolejki, a także usługi Windows, jeśli tak, czy mógłbyś zasugerować, gdzie powinny być dodane te uprawnienia?

Odpowiedz

4

Tak, wygląda na problem z uprawnieniami.

Kliknij prawym przyciskiem myszy swoją prywatną kolejkę w Menedżerze serwera i wybierz Właściwości. Przejdź do karty Zabezpieczenia i upewnij się, że masz odpowiednie uprawnienia do lokalnego konta systemowego.

Zostało to również potwierdzone w artykule Nicholas Allen: Diagnosing Common Queue Errors, gdzie autor definiuje kod błędu 0xC00E0025 jako problem uprawnień.

+0

Niż za odpowiedź Daniel. Próbowałem podać wszystkie odpowiednie uprawnienia dla konta komputera, które jest obecne na liście, jeśli jest to tak zwane lokalne konto systemowe. Ale jednak dostaję ten sam błąd. Utworzona prywatna kolejka ma moje logowanie do domeny jako właściciela. Nie mam pojęcia, na które wszystkie uprawnienia muszę ustawić. Czy możesz zasugerować, czy brakuje jakiegoś innego pozwolenia? – Sowmya

+0

Sowmyo, czy to działa? Jeśli nie, sprawdź ten link http://beyondrelational.com/blogs/ibhadelia/archive/2011/06/21/an-error-occurred-while-opening-the-queue-access-is-denied-msmq-exception. aspx – IBhadelia

2

Wpadłem na ten sam problem, oto rozwiązanie.

Kliknij prawym przyciskiem myszy "Mój komputer" -> Zarządzaj. W oknie Zarządzanie komputerem przejdź do "Usługi i aplikacje -> Kolejkowanie wiadomości -> kolejka ur", wybierz właściwości kolejki ur i dostępu. Dodaj użytkownika uruchamiającego aplikację WCF i daj pełny dostęp. To powinno rozwiązać problem.

0

Może to być proste, że usługa nie może znaleźć swojej kolejki. Nazwa kolejki musi dokładnie odpowiadać adresowi punktu końcowego.

Przykład:

net.msmq: //localhost/private/wf.listener_srv/service.svc

punktów do lokalnego kolejce

private $ \ wf. listener_srv \ service.svc

Jeśli nazwa kolejki i punkt końcowy są w zależności od siebie, najbardziej przypomina to, że poświadczenia zdefiniowane na IIS pool nie przyznają dostępu do kolejki.