2010-03-25 19 views
6

Mam problemy z moją usługą WCF. Muszę zrobić wstrzyknięcie kontenera windsor przed aplikacją application_start i zauważyłem, że mogę użyć metody AppInitialise. To działa na Visual Studio debugowania ale gdy wdrożyć do IIS kod nie zostanie zwolniony .. I zainicjowany klasę następującoPodłączanie do AppInitialize z usługą WCF

public static class Class1 
{ 
    public static void AppInitialize() 
    { 
     IWindsorContainer container; 
     container = new WindsorContainer("windsor.xml"); 
     container.AddFacility<WcfFacility>(); 
     container.Resolve<ProfileLookUpService>(); 
    } 
} 

Czy istnieją jakieś szczególne zadanie muszę zrobić, aby to działało na IIS. Używam wersji 6.

Dzięki!

Odpowiedz

4

Cóż, trzeba zdawać sobie sprawę z kilku rzeczy:

  • usługa WCF może być self-hosted - nie zawsze jest obsługiwana w IIS, więc nie opierają się na mechanizmie IIS specyficznych jeśli w ogóle możliwe

  • usługa WCF na stronie serwera w zasadzie składa się z ServiceHost (lub jego niestandardowego potomka), który inicjuje czas pracy WCF i będzie tworzyć instancje klasy usług, ile potrzeba do obsługi żądań

Tak naprawdę to zależy od tego, gdzie chcesz wstrzykiwać swoje rzeczy - moje przeczucie powiedziałoby mi, że prawdopodobnie interesuje Cię możliwość stworzenia niestandardowego potomka ServiceHost, i podpięcia się niektórymi metodami i zdarzeniami, aby poradzić sobie z inicjalizacją .

sprawdzić kilka naprawdę dobrych artykułów i blogu na ten temat tutaj:

+0

Jeśli chcę (usługa WCF) zbudować stałe połączenie z gniazdem hosta, gdy usługa WCF zostanie uruchomiona, czy możesz zasugerować/doradzić, jak to zrobić? Jak wspomniałeś w swojej odpowiedzi, że nie powinniśmy polegać na mechanizmie specyficznym dla IIS. – FaizanRabbani

-1

Jeśli AppInitialize() nie jest wywoływana po uruchomieniu na serwerze wdrażania, a następnie najprawdopodobniej nie włączyłeś aktywacji WCF Non-Http na tym serwerze.

Przejdź do panelu sterowania> Program i funkcje> Włącz lub wyłącz funkcje systemu Windows, a następnie wyszukaj "Microsoft .NET Framework 3.5.1". W tej opcji upewnij się, że jest zainstalowana opcja Aktywacja Windows Communication Foundation bez HTTP.

Powiązane problemy