2012-02-27 33 views
8

Jestem całkowicie nowy dla WCF i wdrażania usług. Mam problem z skonfigurowaniem usługi w usługach IIS 6.0.Jak wdrożyć moją usługę WCF w usługach IIS 6.0?

Potrzebuję dokładnych kroków, aby wdrożyć moją usługę WCF w usługach IIS 6.0.

Uwaga: I stworzył aplikację WCF service ...

Więc, co jest dokładne kroki muszę wykonać, aby wdrożyć moją usługę wcf na IIS 6.0?

+2

Patrz: http://www.youtube.com/watch?v=mX8quq7MoeI –

+2

lub MSDN tutaj: http://msdn.microsoft.com/en-us/library/ms733766.aspx –

Odpowiedz

11

Masz w zasadzie dwie opcje, wierzę:

Wariant 1 - "bin" wdrożyć (opcja preferowana)

  1. skompilować usługę WCF w DLL (biblioteki klas)
  2. stworzenie strony internetowej w IIS6
  3. skopiować WCF DLL do .\bin folderze witryny
  4. stworzyć *.svc plik w tej witrynie
  5. dodać odpowiednią web.config w folderze strony, aby zdefiniować swoje punkty końcowe i konfigurację usługi itp

Usługa WCF będzie teraz osiągalny pod adresem bazowej witryny, plus nazwa *.svc plik, np

http://myserver/someweb/Myservice.svc 

Twój *.svc będzie wyglądać mniej więcej tak:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService" %> 

The Service= atrybuty oznacza klasę wykonawczą służby - pełną z jego nazw.

Wariant 2 - umieścić rzeczy w App_Code

  1. stworzyć stronę internetową w IIS6
  2. umieścić wszystkie swoje WCF związane *.cs pliki bezpośrednio do folderu .\App_Code
  3. utworzyć plik *.svc w tej witrynie
  4. dodać odpowiedni folder web.config do zdefiniowania punktów końcowych i konfiguracji usług itp.

Twoja usługa WCF będzie teraz dostępna pod adresem bazowym witryny, a także pod nazwą pliku *.svc, np.

http://myserver/someweb/Myservice.svc 

Twój *.svc będzie wyglądać mniej więcej tak:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %> 

Prosty, próbka web.config może wyglądać mniej więcej tak:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="WithDebug"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <services> 
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="true"> 
     <endpoint 
      address="" 
      binding="basicHttpBinding" 
      contract="SimpleWCF.IHelloIndigoService" /> 
     <endpoint 
      address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
    </service> 
    </services> 
</system.serviceModel> 

Zasadniczo zdefiniować tag <service> - i znowu: name= oznacza klasę implementującą usługę - pełną kwalifikację z jej przestrzenią nazw. Musi zawierać co najmniej jeden punkt końcowy - ponieważ protokół IIS6 obsługuje tylko protokół HTTP, można użyć numeru basicHttpBinding lub wsHttpBinding i to wszystko, co istnieje. Punkt końcowy "mex" jest opcjonalny, ale bardzo przydatny, szczególnie do programowania i testowania. Pozwala to klientowi "odkryć" usługę i uzyskać jej opis usługi, aby mógł się z nią połączyć.

Gdy usługa jest wdrażane w IIS, można zobaczyć go w akcji za pomocą narzędzia jak WCF Test Client że statki za darmo z WCF lub SoapUI który jest narzędziem do testowania SOAP ogólnego przeznaczenia (z bezpłatnej wersji dla was posługiwać się).

+0

muszę dodać cokolwiek w tagu adresu mojego pierwszego punktu końcowego? – Willem

+2

@Willem: zwykle nie - podczas hostowania w IIS, jest to katalog wirtualny usług IIS, który kontroluje adres. Możesz dodać do niego coś takiego jak "MyService" - "względny" adres - wtedy twoja usługa byłaby na 'http: // MyServer/VirtualDir/MyService.svc/MyService' - ale od tego pliku' * .svc' jest i tak te adresy stają się nieco niezgrabne ... –

+1

To jest niesamowite. Dziękuję Ci bardzo – Willem

Powiązane problemy