Dela via


Distribuera en Internet Information Services-värdbaserad WCF-tjänst

Utveckla och distribuera en WCF-tjänst (Windows Communication Foundation) som finns i IIS (Internet Information Services) består av följande uppgifter:

  • Kontrollera att IIS, ASP.NET, WCF och WCF-aktiveringskomponenten är korrekt installerade och registrerade.

  • Skapa ett nytt IIS-program eller återanvänd ett befintligt ASP.NET program.

  • Skapa en .svc-fil för WCF-tjänsten.

  • Distribuera tjänstimplementeringen till IIS-programmet.

  • Konfigurera WCF-tjänsten.

En detaljerad genomgång av hur du skapar en IIS-värdbaserad WCF-tjänst finns i Så här: Vara värd för en WCF-tjänst i IIS.

Kontrollera att IIS, ASP.NET och WCF är korrekt installerade och registrerade

WCF, IIS och ASP.NET måste installeras för att IIS-värdbaserade WCF-tjänster ska fungera korrekt. Procedurerna för att installera WCF (som en del av .NET Framework), ASP.NET och IIS varierar beroende på ditt operativsystem. Mer information om hur du installerar WCF och .NET Framework finns i Installera .NET Framework för utvecklare. Om du vill installera IIS på Windows 10 öppnar du Program och funktioner i Kontrollpanelen och väljer sedan Aktivera eller inaktivera Windows-funktioner. I Windows-funktioner väljer du Internet Information Services och sedan OK.

Windows Features with IIS highlighted

Instruktioner för att installera IIS på andra operativsystem finns i Installera IIS på Windows Vista och Windows 7 och Installera IIS 8.5 på Windows Server 2012 R2.

Installationsprocessen för .NET Framework registrerar automatiskt WCF med IIS om IIS redan finns på datorn. Om IIS har installerats efter .NET Framework krävs ytterligare ett steg för att registrera WCF med IIS och ASP.NET. Du kan göra detta på följande sätt, beroende på ditt operativsystem:

Skapa ett nytt IIS-program eller återanvänd ett befintligt ASP.NET-program

IIS-värdbaserade WCF-tjänster måste finnas i ett IIS-program. Du kan skapa ett nytt IIS-program som ska vara värd för WCF-tjänster exklusivt. Du kan också distribuera en WCF-tjänst till ett befintligt program som redan är värd för ASP.NET 2.0-innehåll (till exempel .aspx sidor och ASP.NET webbtjänster [ASMX]). Mer information om dessa alternativ finns i avsnitten "Hosting WCF Side-by-Side with ASP.NET" och "Hosting WCF Services in ASP.NET Compatibility Mode" (Värd för WCF sida vid sida med ASP.NET) och "Hosting WCF Services in ASP.NET Compatibility Mode" (Värd för WCF-tjänster sida vid sida med ASP.NET) och "Hosting WCF Services in ASP.NET Compatibility Mode" (Värd för WCF-tjänster sida vid sida med ASP.NET ASP.NET) och "Hosting WCF Services in ASP.NET Compatibility Mode" ( Värd för WCF sida vid sida med ASP.NET) och "Hosting WCF Services in

Observera att IIS 6.0 och senare versioner regelbundet startar om ett isolerat objektorienterat programmeringsprogram. Standardvärdet är 1 740 minuter. Det maximala värdet som stöds är 71 582 minuter. Den här omstarten kan inaktiveras. Mer information om den här egenskapen finns i PeriodicRestartTime.

Skapa en .svc-fil för WCF-tjänsten

WCF-tjänster som finns i IIS representeras som särskilda innehållsfiler (.svc-filer) i IIS-programmet. Den här modellen liknar hur ASMX-sidor representeras i ett IIS-program som .asmx-filer. En .svc-fil innehåller ett WCF-specifikt bearbetningsdirektiv (@ServiceHost) som gör att WCF-värdinfrastrukturen kan aktivera värdbaserade tjänster som svar på inkommande meddelanden. Den vanligaste syntaxen för en .svc-fil finns i följande instruktion.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>

Det består av @ServiceHost-direktivet och ett enda attribut, Service. Värdet för Service attributet är clr-typnamnet (common language runtime) för tjänstimplementeringen. Att använda det här direktivet är i princip detsamma som att skapa en tjänstvärd med hjälp av följande kod.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

Ytterligare värdkonfiguration, till exempel att skapa en lista med basadresser för tjänsten, kan också göras. Du kan också använda en anpassad ServiceHostFactory för att utöka direktivet för användning med anpassade värdlösningar. De IIS-program som är värdar för WCF-tjänster ansvarar inte för att hantera skapandet och livslängden för ServiceHost instanser. Den hanterade WCF-värdinfrastrukturen skapar den nödvändiga ServiceHost instansen dynamiskt när den första begäran tas emot för .svc-filen. Instansen släpps inte förrän den antingen stängs explicit av kod eller när programmet återvinns.

Mer information om syntaxen för .svc-filer finns i @ServiceHost.

Distribuera tjänstimplementeringen till IIS-programmet

WCF-tjänster som finns i IIS använder samma dynamiska kompileringsmodell som ASP.NET 2.0. Precis som med ASP.NET kan du distribuera implementeringskoden för IIS-värdbaserade WCF-tjänster på flera sätt på olika platser, enligt följande:

  • Som en fördefinierad .dll fil som finns i den globala sammansättningscache (GAC) eller i programmets \bin-katalog. Förkompilerade binärfiler uppdateras inte förrän en ny version av klassbiblioteket har distribuerats.

  • Som okompilerade källfiler som finns i programmets \App_Code-katalog. Källfiler som finns i den här katalogen krävs dynamiskt när programmets första begäran bearbetas. Ändringar av filer i katalogen \App_Code gör att hela programmet återanvänds och omkompileras när nästa begäran tas emot.

  • Som okompilerad kod som placeras direkt i .svc-filen. Implementeringskoden kan också finnas infogad i tjänstens .svc-fil efter @ServiceHost-direktivet. Ändringar i infogad kod gör att programmet återvinns och omkompileras när nästa begäran tas emot.

Mer information om kompileringsmodellen ASP.NET 2.0 finns i ASP.NET Kompileringsöversikt.

Konfigurera WCF-tjänsten

IIS-värdbaserade WCF-tjänster lagrar sin konfiguration i programfilen Web.config. IIS-värdbaserade tjänster använder samma konfigurationselement och syntax som WCF-tjänster som finns utanför IIS. Följande begränsningar är dock unika för IIS-värdmiljön:

  • Basadresser för IIS-värdbaserade tjänster.

  • Program som är värdar för WCF-tjänster utanför IIS kan styra basadressen för de tjänster som de är värd för genom att skicka en uppsättning basadress-URI:er till ServiceHost konstruktorn eller genom att tillhandahålla ett <värdelement> i tjänstens konfiguration. Tjänster som finns i IIS har inte möjlighet att kontrollera sin basadress. Basadressen för en IIS-värdbaserad tjänst är adressen till dess .svc-fil.

Slutpunktsadresser för IIS-värdbaserade tjänster

När slutpunktsadresserna finns i IIS anses de alltid vara relativa till adressen till den .svc-fil som representerar tjänsten. Om till exempel basadressen för en WCF-tjänst är http://localhost/Application1/MyService.svc med följande slutpunktskonfiguration:

<endpoint address="anotherEndpoint" />

Detta ger en slutpunkt som kan nås på http://localhost/Application1/MyService.svc/anotherEndpoint.

På samma sätt ger slutpunktskonfigurationselementet som använder en tom sträng som den relativa adressen en slutpunkt som kan nås vid http://localhost/Application1/MyService.svc, vilket är basadressen.

<endpoint address="" />

Du måste alltid använda relativa slutpunktsadresser för IIS-värdbaserade tjänstslutpunkter. Att ange en fullständigt kvalificerad slutpunktsadress (till exempel http://localhost/MyService.svc) kan leda till fel i distributionen av tjänsten om slutpunktsadressen inte pekar på det IIS-program som är värd för tjänsten som exponerar slutpunkten. Användning av relativa slutpunktsadresser för värdbaserade tjänster undviker dessa potentiella konflikter.

Tillgängliga transporter

WCF-tjänster som finns i IIS 5.1 och IIS 6.0 är begränsade till att använda HTTP-baserad kommunikation. Om du konfigurerar en värdbaserad tjänst för att använda en icke-HTTP-bindning på dessa IIS-plattformar uppstår ett fel under tjänstaktiveringen. För IIS 7.0 är transporterna som stöds HTTP, Net.TCP, Net.Pipe, Net.MSMQ och msmq.formatname för bakåtkompatibilitet med befintliga MSMQ-program.

HTTP Transport Security

IIS-värdbaserade WCF-tjänster kan använda HTTP-transportsäkerhet (till exempel HTTPS- och HTTP-autentiseringsscheman som Basic, Digest och Windows Integrated Authentication) så länge den virtuella IIS-katalogen som innehåller tjänsten stöder dessa inställningar. HTTP Transport Security-inställningarna för en värdbaserad slutpunktsbindning måste matcha transportsäkerhetsinställningarna i den virtuella IIS-katalogen som innehåller den.

En WCF-slutpunkt som konfigurerats för att använda HTTP-sammanfattad autentisering måste till exempel finnas i en virtuell IIS-katalog som också är konfigurerad för att tillåta HTTP-sammanfattad autentisering. Omatchade kombinationer av IIS-inställningar och WCF-slutpunktsinställningar resulterar i ett fel under tjänstaktiveringen.

Se även