2010-06-15 11 views
6

Hostuję usługę WCF w IIS7 na Windows Server 08, sp2. Usługa jest hostowana jako własna strona internetowa i jest udostępniana przez punkt końcowy NET.TCP. Usługa działa doskonale, dopóki nie zostanie wydane polecenie restart/iisreset.restart/iisreset wyłącza protokół NET.TCP?

Po ponownym uruchomieniu lub iisreset, kiedy wykonuję wywołanie serwisowe, pojawia się następujący błąd: "System.ServiceModel.EndpointNotFoundException: Nie można wysłać komunikatu, ponieważ usługa pod adresem punktu końcowego" net.tcp: // [witryna]/[nazwa_usługi] .svc "jest niedostępna dla protokołu adresu."

Dziennik zdarzeń serwera pokazuje następujący błąd: "Wystąpił błąd podczas próby odczytania i utworzenia instancji skonfigurowanego parametru ProcessHandlerType. Wyjątek: System.ArgumentException Komunikat: Nieznany identyfikator protokołu "NET.TCP". StackTrace: co System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) "

Pytanie: Jak mogę rozwiązać ten problem? Dlaczego protokół NET.TCP jest wyłączony po zresetowaniu? Czy to błąd? Czy brakuje mi jakiejś konfiguracji?

szczegóły konfiguracji IIS: - Server 08 i 08 R2 - Wiązania: http, Net.TCP (808: *) - EnabledProtols: http, Net.TCP. - Tożsamość dla aplikacji appPool witryny jest ustawiona dla określonego użytkownika.

dostępny Przykładowy kod tutaj: http://drop.io/wcfTcpSampleService

Dzięki

+1

Hacky (niedogodny) Obejście problemu: Mogę go uruchomić ponownie, jeśli (1) usunę NET.TCP z witryny EnabledProtocols (2) iisreset (3) doda NET.TCP z powrotem do strony EnabledProtocols. Witryna nadal działa, dopóki nie zostanie wydana ponownie. Program IIS robi coś, gdy dodaję NET.TCP do EnabledProtocols, który nie ma miejsca, gdy IIS uruchamia się po dodaniu NET.TCP. –

+0

Kiedy to się dzieje, jaki jest stan usługi Listner Net.Tcp? Do czego jest ustawiony typ uruchamiania usługi Net.Tcp Listner? Czy w dziennikach zdarzeń System lub Application jest coś ważnego? –

+0

Adapter odbiornika Net.Tcp jest uruchamiany (typ uruchamiania: Auto). Błąd w dzienniku zdarzeń to "Wystąpił błąd podczas próby odczytania i utworzenia instancji skonfigurowanego obiektu ProcessHandlerType. Wyjątek: Wyjątek System.ArgumentException Komunikat: Nieznany identyfikator protokołu "NET.TCp". StackTrace: w System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) ' –

Odpowiedz

9

Rozwiązany. Problemem jest rozróżnianie wielkości liter. W AdvancedSettings aplikacji internetowej pole EnabledProtocols musi być pisane małymi literami, np. "Net.tcp" (właśnie dowiedziałem się o tym ze wsparcia MS).

Przyjęłam (głupio), że "NET.TCP" powinno być pisane wielkimi literami ze względu na opis pola EnabledProtocols ("... dodaj te wartości, takie jak NET.TCP ...").

Dziwnym, nieznanym problemem jest to, dlaczego po raz pierwszy będzie działać z "NET.TCP", ale jest to inny problem.

Dzięki za wszystko, pomóżcie wszystkim.

+0

Czy jest dostępny jakiś link z działu pomocy technicznej dotyczącej wrażliwości na wielkość liter? – alexandrul

+0

@alexandrul Osoba wspierająca MS miała tylko wewnętrzny link opisujący wielkość liter. –

+0

Występuje ten problem z systemem Windows Server 2012. Zmiana wielkości pliku net.tcp nie miała znaczenia. Ktoś jeszcze? – bkstill

0

Czy rzeczywiście trzeba zrobić pełną IISRESET? Uważam, że "nowoczesna" zalecana metoda, gdy trzeba całkowicie zrestartować aplikację hostowaną przez internet, powoduje recykling puli aplikacji w następujący sposób: iisapp /a <App_Pool_ID> /r (Windows 2003) lub appcmd recycle apppool /apppool.name:<App_Pool_Name> (Windows 2008).

+0

Niestety, ta usługa będzie hostowana na komputerze, do którego wielu ludzi będzie miało dostęp i nie będę mógł im zapobiec. Problem występuje również po ponownym uruchomieniu komputera. –

1

Czy można używać różnych portów dla protokołów NET.TCP i HTTP?

Aktualizacja

na moim komputerze wszystko działa tak jak powinno, i próbowałem zarówno restart i iisreset. Przesłałem w tym samym miejscu twój projekt, w tym pliki binarne (używane Visual Web Developer 2010 Express) i zrzut ekranu ustawień IIS. Pula aplikacji jest zintegrowana z .NET 4.0.

iis7 http://www.freeimagehosting.net/uploads/1a727d66ce.png

+0

Mam ten problem przy użyciu portów 80 i 8008 dla http i 808, 8009, 8089, 9200 dla tcp. –

+0

@Kevin możesz przesłać gdzieś przykładową usługę WCF do zabawy? – alexandrul

+0

Dodałem łącze do lokalizacji d/l w pierwotnym pytaniu. –

0

Jakie wersje .NET masz (lub miałeś) zainstalowane?

Miałem bardzo podobny problem podczas przechodzenia z .NET 4 RC do RTM, ponieważ usługi TCP korzystały z bibliotek dll z instalacji RC (która już nie istniała) powodując zatrzymanie usług.

+0

.NET wersje 2.0, 3.0, 3.5. Zarówno serwery 08, jak i 08 R2 były fabrycznie nowymi instalacjami (jedna maszyna wirtualna i jedna fizyczna). –