Sdílet prostřednictvím


Nasazení služby WCF hostované Internetovou informační službou

Vývoj a nasazení služby WCF (Windows Communication Foundation), která je hostovaná v Internetová informační služba (IIS), se skládá z následujících úloh:

  • Ujistěte se, že je správně nainstalovaná a zaregistrovaná služba IIS, ASP.NET, WCF a aktivační komponenta WCF.

  • Vytvořte novou aplikaci IIS nebo znovu použijte existující ASP.NET aplikaci.

  • Vytvořte soubor .svc pro službu WCF.

  • Nasaďte implementaci služby do aplikace IIS.

  • Nakonfigurujte službu WCF.

Podrobný návod k vytvoření služby WCF hostované službou IIS naleznete v tématu Postupy: Hostování služby WCF ve službě IIS.

Ujistěte se, že jsou správně nainstalované a zaregistrované služby IIS, ASP.NET a WCF.

Aby služby WCF, IIS a ASP.NET fungovaly správně, musí být nainstalované služby WCF hostované službou IIS. Postupy instalace WCF (jako součást rozhraní .NET Framework), ASP.NET a služby IIS se liší v závislosti na vašem operačním systému. Další informace o instalaci WCF a rozhraní .NET Framework naleznete v tématu Instalace rozhraní .NET Framework pro vývojáře. Chcete-li nainstalovat službu IIS ve Windows 10, otevřete programy a funkce v Ovládací panely a pak vyberte Zapnout nebo vypnout funkce systému Windows. V okně Funkce systému Windows vyberte Internetová informační služba a pak zvolte OK.

Windows Features with IIS highlighted

Pokyny k instalaci služby IIS v jiných operačních systémech naleznete v části Instalace služby IIS v systémech Windows Vista a Windows 7 a Instalace služby IIS 8.5 v systému Windows Server 2012 R2.

Proces instalace rozhraní .NET Framework automaticky zaregistruje WCF ve službě IIS, pokud už na počítači existuje služba IIS. Pokud je služba IIS nainstalovaná po rozhraní .NET Framework, je potřeba další krok pro registraci WCF ve službě IIS a ASP.NET. Můžete to provést následujícím způsobem v závislosti na vašem operačním systému:

Vytvoření nové aplikace IIS nebo opětovné použití existující aplikace ASP.NET

Služby WCF hostované službou IIS se musí nacházet uvnitř aplikace SLUŽBY IIS. Můžete vytvořit novou aplikaci SLUŽBY IIS, která bude hostovat výhradně služby WCF. Případně můžete nasadit službu WCF do existující aplikace, která již hostuje obsah ASP.NET 2.0 (například stránky .aspx a webové služby ASP.NET [ASMX]). Další informace o těchto možnostech najdete v částech Hostování WCF vedle ASP.NET a Hostování služeb WCF v režimu kompatibility ASP.NET a ASP.NET.

Mějte na paměti, že služba IIS 6.0 a novější verze pravidelně restartuje izolovanou objektově orientované programovací aplikaci. Výchozí hodnota je 1740 minut. Maximální podporovaná hodnota je 71 582 minut. Toto restartování je možné zakázat. Další informace o této vlastnosti naleznete v periodicRestartTime.

Vytvoření souboru .svc pro službu WCF

Služby WCF hostované ve službě IIS jsou reprezentovány jako speciální soubory obsahu (soubory .svc) uvnitř aplikace IIS. Tento model je podobný způsobu, jakým jsou stránky ASMX reprezentovány uvnitř aplikace IIS jako soubory .asmx. Soubor .svc obsahuje direktivu zpracování specifickou pro WCF (@ServiceHost), která umožňuje hostitelské infrastruktuře WCF aktivovat hostované služby v reakci na příchozí zprávy. Nejběžnější syntaxe souboru .svc je v následujícím příkazu.

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

Skládá se z @ServiceHost direktivy a jednoho atributu. Service Hodnota atributu Service je název typu CLR (Common Language Runtime) implementace služby. Použití této direktivy je v podstatě ekvivalentní k vytvoření hostitele služby pomocí následujícího kódu.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );

Můžete také provést další konfiguraci hostování, například vytvoření seznamu základních adres pro službu. Můžete také použít vlastní ServiceHostFactory rozšíření direktivy pro použití s vlastními hostitelskými řešeními. Aplikace IIS, které hostují služby WCF, nejsou zodpovědné za správu vytváření a životnosti ServiceHost instancí. Spravovaná infrastruktura hostování WCF vytvoří potřebnou ServiceHost instanci dynamicky při přijetí prvního požadavku pro soubor .svc. Instance se nevyvolá, dokud ji explicitně nezavře kód nebo když se aplikace recykluje.

Další informace o syntaxi souborů .svc najdete v tématu @ServiceHost.

Nasazení implementace služby do aplikace IIS

Služby WCF hostované ve službě IIS používají stejný model dynamické kompilace jako ASP.NET 2.0. Stejně jako u ASP.NET můžete nasadit kód implementace pro služby WCF hostované službou IIS několika způsoby v různých umístěních následujícím způsobem:

  • Jako předkompilovaný soubor .dll umístěný v globální mezipaměti sestavení (GAC) nebo v adresáři \bin aplikace. Předkompilované binární soubory se neaktualizují, dokud nenasadíte novou verzi knihovny tříd.

  • Jako nekompilované zdrojové soubory umístěné v adresáři \App_Code aplikace. Zdrojové soubory umístěné v tomto adresáři se při zpracování prvního požadavku aplikace dynamicky vyžadují. Všechny změny souborů v adresáři \App_Code způsobí, že se celá aplikace recykluje a znovu zkompiluje při přijetí dalšího požadavku.

  • Jako nekompilovaný kód umístěný přímo v souboru .svc. Implementační kód může být také umístěn v řádku v souboru .svc služby za direktivou @ServiceHost. Všechny změny vloženého kódu způsobí recyklaci a opětovné zkompilování aplikace při přijetí dalšího požadavku.

Další informace o modelu kompilace ASP.NET 2.0 najdete v tématu ASP.NET Přehled kompilace.

Konfigurace služby WCF

Služby WCF hostované službou IIS ukládají svou konfiguraci do souboru Web.config aplikací. Služby hostované službou IIS používají stejné konfigurační prvky a syntaxi jako služby WCF hostované mimo službu IIS. Následující omezení jsou však jedinečná pro hostitelské prostředí služby IIS:

  • Základní adresy pro služby hostované službou IIS.

  • Aplikace hostující služby WCF mimo službu IIS mohou řídit základní adresu služeb, které hostují, předáním sady identifikátorů URI základní adresy konstruktoru ServiceHost nebo poskytnutím <prvku hostitele> v konfiguraci služby. Služby hostované ve službě IIS nemají možnost řídit jejich základní adresu; Základní adresa služby hostované službou IIS je adresa souboru .svc.

Adresy koncových bodů pro služby IIS hostované službou

Při hostování ve službě IIS se adresy koncových bodů vždy považují za relativní vzhledem k adrese souboru .svc, který představuje službu. Pokud je například základní adresa služby http://localhost/Application1/MyService.svc WCF s následující konfigurací koncového bodu:

<endpoint address="anotherEndpoint" />

To poskytuje koncový bod, na který lze dosáhnout http://localhost/Application1/MyService.svc/anotherEndpoint.

Podobně element konfigurace koncového bodu, který používá prázdný řetězec jako relativní adresa, poskytuje koncový bod dostupný na http://localhost/Application1/MyService.svc, což je základní adresa.

<endpoint address="" />

Pro koncové body služby hostované službou IIS musíte vždy používat relativní adresy koncových bodů koncového bodu. Poskytnutí plně kvalifikované adresy koncového bodu (například http://localhost/MyService.svc) může vést k chybám při nasazování služby, pokud adresa koncového bodu neodkazuje na aplikaci IIS, která hostuje službu, která koncový bod vystavuje. Použití relativních adres koncových bodů pro hostované služby zabrání těmto potenciálním konfliktům.

Dostupné přenosy

Služby WCF hostované ve službě IIS 5.1 a IIS 6.0 jsou omezené na použití komunikace založené na protokolu HTTP. Při konfiguraci hostované služby na těchto platformách služby IIS dojde k chybě při aktivaci služby kvůli použití vazby jiného typu než HTTP. U služby IIS 7.0 podporované přenosy zahrnují HTTP, Net.TCP, Net.Pipe, Net.MSMQ a msmq.formatname pro zpětnou kompatibilitu se stávajícími aplikacemi MSMQ.

Zabezpečení přenosu HTTP

Služby WCF hostované službou IIS můžou využívat zabezpečení přenosu HTTP (například schémata ověřování HTTPS a HTTP, jako jsou základní, digest a integrované ověřování systému Windows), pokud virtuální adresář služby IIS, který obsahuje tuto službu, podporuje tato nastavení. Nastavení zabezpečení přenosu HTTP u vazby hostovaného koncového bodu musí odpovídat nastavení zabezpečení přenosu ve virtuálním adresáři služby IIS, který ho obsahuje.

Například koncový bod WCF nakonfigurovaný tak, aby používal ověřování hodnotou HASH PROTOKOLU HTTP, musí být umístěn ve virtuálním adresáři služby IIS, který je také nakonfigurovaný tak, aby umožňoval ověřování hodnotou HASH PROTOKOLU HTTP. Chybějící kombinace nastavení služby IIS a nastavení koncového bodu WCF způsobí chybu při aktivaci služby.

Viz také