2009-07-28 30 views
15

Mam do usług WCF, które używają protokołu net.msmq, hostowany w IIS 7. Mój problem polega na tym, że usługi nie są aktywowane, gdy pojawia się nowy komunikat w kolejce, musisz fizycznie najpierw przejdź do usług, zanim zaczną zbierać wiadomości.Aktywacja automatyczna usługi WCF netto.msmq

Czy istnieje sposób automatycznej aktywacji tych usług?

Dzięki z góry za wszelką pomoc

poważaniem Brian

+0

Mamy ten sam problem, otwieram zgłoszenie do pomocy technicznej z firmą Microsoft, aby znaleźć się u dołu problemu. Zastanawiam się, czy istnieje sposób, aby poznać dokładny błąd lub powód, dla którego nie aktywuje się – user80855

Odpowiedz

3

Jest to naprawdę dobry trzyczęściowej serii na uzyskiwanie WCF MSMQ i IIS działa i gra ładnie razem na blogu Tom Hollander za:

Może ci pomogą? MSMQ hostowany w IIS7 powinien zdecydowanie odbierać komunikaty WCF automatycznie, jeśli wszystko jest poprawnie skonfigurowane.

Istnieje kilka ustawień, które nie są gotowe do instalacji - patrz część 1. Konieczne może być dodanie i włączenie dodatkowych funkcji systemu Windows i może być konieczne uruchomienie narzędzia appcmd.exe w celu skonfigurowania usługi WAS (Windows Activation Server, część IIS7), aby automatycznie obsługiwać żądania inne niż http.

Marc

3

Wiem, że to stary post, ale w przypadku, gdy ktoś inny przyjść z tym problemem ...

Jeśli usługa nie uruchamia raz puli aplikacji został zamknięty, to najprawdopodobniej ponieważ nazwa kolejki nie pasuje do identyfikatora URI usługi, więc WAS nie wie, którą aplikację aktywować.

Tak na przykład, jeśli tworzysz aplikację „Usługi” w domyślnej witryny internetowej i mieć FirstService.svc, nazwa kolejki powinien być private $ \ Usługi/FirstService.svc

[Edit: Nazwa kolejki powinna zawierać również nazwę aplikacji w liczbie mnogiej.

2

Wynika to z faktu, że WAS nie będzie automatycznie aktywowany lub "rozgrzewany" podczas używania MSMQ. Rozwiązania mają wyglądać na IIS 7 Warm Up module lub mieć coś podobnego do load balancera, wysyłającego polecenie ping do twojej usługi (do tego celu używamy urządzenia F5). Aktualizacja - tutaj jest link do IIS 8 App Initialization

+0

Twój link umarł. Czy IIS 8.0 Application Initialization to replacement? –

+0

Tak, masz rację –

+0

To rozwiązanie sprawdziło się u mnie. W IIS 7.5 trzeba pobrać moduł Inicjowanie aplikacji jako osobną instalację. –

0

Znalazłem, że w Windows 7 z IIS 7.5 i .NET 4.0, usługa NetMsmqActivator jest domyślnie wyłączona i zatrzymana. Musisz go włączyć i uruchomić.

Ponadto, kolejka musi zezwalać na "Odbieranie wiadomości" i "Komunikat Peek" dla konta używanego przez pulę aplikacji i dla konta używanego przez NetMsmqActivator. Przy domyślnej instalacji możesz użyć IIS APPPOOL\ASP.NET v4.0 (musisz wpisać: 3 'P, zajmij się spacjami) i NETWORK SERVICE.

0

Obserwowaliśmy ten problem przez ponad miesiąc teraz w systemie z tych właściwości:

  • usługi mieszane, zarówno http i msmq oparty gościł w WAS na protokole IIS7.5
  • Msmq używane : net.msmq
  • usługi nie hosed w głównym stronie internetowej, ale w aplikacji pod

Zostaliśmy uruchomiony przez wszystkich wytycznych i rozwiązywania problemów tecniques obejmujące: * Konfiguracja protokołu na poziomie iis i aplikacji. * nazewnictwo kolejki * ustawienia zabezpieczeń kolejki, usług Windows i iis

Ale problem nadal występował. Nasze rozwiązanie było następujące: http://www.daczkowski.net/tag/wcf/ To jest zainstalowanie appfabric na naszym komputerze i skonfigurowanie usług dla autostart.

Sam problemem jest to raczej trudne do pełnego zdefiniowania, co możemy powiedzieć, to tylko, że „czasem usługa zostanie zatrzymane przetwarzanie z kolejki”

-1

Wystarczy ustawić aplikacji Auto-Start na „Włączone” w IIS

0

Moje rozwiązanie to połączenie kilku odpowiedzi tutaj. Moja kolejka ma włączoną autoryzację, więc niektóre kroki mogą nie być potrzebne, jeśli uwierzytelnienie nie jest używane.

Oto kroki śledzę umieścić go do pracy w systemie Windows 2012:

1) Instalowanie innych niż HTTP usługi aktywacji WAP (https://msdn.microsoft.com/en-us/library/ms731053(v=vs.110).aspx)

2) Utwórz kolejkę z tej samej nazwie co aplikacja IIS, taka jak ta private$/<WCF application>/myservice.svc.

Usługa Net.Msmq Listener Adapter spróbuje dopasować kolejkę i nazwę aplikacji WCF w usługach IIS wskazanych przez VdesmedT.

3) Włącz protokoły na miejscu i w aplikacji.

Pierwszy tworzyć wiązania.

% windir% \ system32 \ inetsrv \ appcmd.exe ustawić site "Default Web Site" - + Wiązania [protocol = 'Net.TCP', bindingInformation =” 808: * ']

wiązania witryna powinna wyglądać następująco: enter image description here

Następnie włączyć protokół net.msmq na miejscu

% windir% \ system32 \ inetsrv \ appcmd.exe set config -section: system.applicationHost/sites "/ [name = 'Default Web Site'] [path = '/'] enabledProtocols..": "http, net.msmq"/commit: apphost

To polecenie przerobi protokoły, więc jeśli masz więcej niż włączone http, musisz dodać go do wiersza poleceń.

do zaawansowanych Settins powinieneś zobaczyć to:

enter image description here

I wreszcie włączyć protokół net.msmq dla aplikacji.

% "Domyślna witryna sieci Web /" windir% \ system32 \ inetsrv \ appcmd.exe ustawić aplikacja /enabledProtocols:http,net.tcp

Ekran Zaawansowane ustawienia aplikacji powinny wykazywać takie same rzecz, która pojawia się w Ustawieniach zaawansowanych witryny, przy włączonej linii protokołów.

4) Nadaj uprawnienia do kolejki dla aplikacji IIS do odczytu, przeglądania i usuwania, pobierania właściwości i ustawiania właściwości. Konto domyślne to IIS Apppool \ DefaulApp

5) wyrazić zgodę na peek kolejce do usług Net.Msmq Listener Adapter (domyślnie Network Service)

nie powinien potrzebować, ale musiałem zrestartować po zmianie uprawnień.

Kontrole:

  • aby sprawdzić, czy WCF jest ustawiony prawidłowo używać tylko przeglądać aplikację WCF aby go uaktywnić. Wszelkie wiadomości w kolejce powinny być przetwarzane.

  • Aby sprawdzić, czy WAS aktywuje aplikację WCF, należy odtworzyć pulę aplikacji i wysłać nową wiadomość. Jeśli WAS zadziała, powinien zostać natychmiast przetworzony.

Powiązane problemy