Konfigurace služby aktivace procesu Windows pro použití s Windows Communication Foundation
Toto téma popisuje kroky potřebné k nastavení služby aktivace procesu systému Windows (označované také jako WAS) v systému Windows Vista k hostování služeb Windows Communication Foundation (WCF), které nekomunikují přes síťové protokoly HTTP. Následující části popisují kroky pro tuto konfiguraci:
Nainstalujte (nebo potvrďte instalaci) požadovaných aktivačních komponent WCF.
Vytvořte lokalitu WAS s vazbami síťového protokolu, které chcete použít, nebo přidejte novou vazbu protokolu do existující lokality.
Vytvořte aplikaci pro hostování služeb a povolte této aplikaci používat požadované síťové protokoly.
Vytvořte službu WCF, která zpřístupňuje koncový bod jiného typu než HTTP.
Konfigurace lokality s vazbami bez HTTP
Chcete-li použít vazbu jiného typu než HTTP se systémem WAS, musí být vazba lokality přidána do konfigurace WAS. Úložiště konfigurace pro WAS je soubor applicationHost.config umístěný v adresáři %windir%\system32\inetsrv\config. Toto úložiště konfigurace sdílí služba WAS i IIS 7.0.
applicationHost.config je textový soubor XML, který lze otevřít pomocí libovolného standardního textového editoru (například Poznámkového bloku). Nástroj pro konfiguraci příkazového řádku služby IIS 7.0 (appcmd.exe) je však upřednostňovaným způsobem přidání vazeb webu bez http.
Následující příkaz přidá vazbu webu net.tcp na výchozí web pomocí appcmd.exe (tento příkaz je zadán jako jeden řádek).
appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
Tento příkaz přidá novou vazbu net.tcp na výchozí web přidáním řádku uvedeného níže do souboru applicationHost.config.
<sites>
<site name="Default Web Site" id="1">
<bindings>
<binding protocol="HTTP" bindingInformation="*:80:" />
//The following line is added by the command.
<binding protocol="net.tcp" bindingInformation="808:*" />
</bindings>
</site>
</sites>
Povolení použití protokolů jiného typu než HTTP aplikace
Jednotlivé síťové protokoly můžete povolit nebo zakázat na úrovni aplikace. Následující příkaz ukazuje, jak povolit protokoly HTTP i net.tcp pro aplikaci, která běží v souboru Default Web Site
.
appcmd.exe set app "Default Web Site/appOne" /enabledProtocols:net.tcp
Seznam povolených protokolů lze také nastavit v <prvku applicationDefaults> konfigurace XML webu uloženého v ApplicationHost.config.
Následující kód XML z applicationHost.config znázorňuje web vázaný na protokoly HTTP i jiné protokoly než HTTP. Další konfigurace vyžadovaná pro podporu protokolů jiného typu než HTTP se označuje pomocí komentářů.
<sites>
<site name="Default Web Site" id="1">
<application path="/">
<virtualDirectory path="/" physicalPath="D:\inetpub\wwwroot" />
</application>
<bindings>
<!-- The following two lines are added by the command. -->
<binding protocol="HTTP" bindingInformation="*:80:" />
<binding protocol="net.tcp" bindingInformation="808:*" />
</bindings>
</site>
<siteDefaults>
<logFile
customLogPluginClsid="{FF160663-DE82-11CF-BC0A-00AA006111E0}"
directory="D:\inetpub\logs\LogFiles" />
<traceFailedRequestsLogging
directory="D:\inetpub\logs\FailedReqLogFiles" />
</siteDefaults>
<applicationDefaults
applicationPool="DefaultAppPool"
<!-- The following line is inserted by the command. -->
enabledProtocols="http, net.tcp" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
Pokud se pokusíte aktivovat službu pomocí was pro aktivaci bez HTTP a nenainstalovali jste a nenakonfigurovali WAS, může se zobrazit následující chyba:
[InvalidOperationException: The protocol 'net.tcp' does not have an implementation of HostedTransportConfiguration type registered.] System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937 System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265 System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +227 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Pokud se zobrazí tato chyba, ujistěte se, že je nainstalována a správně nakonfigurovaná aktivace bez PROTOKOLU HTTP. Další informace naleznete v tématu Postupy: Instalace a konfigurace komponent aktivace WCF.
Vytvoření služby WCF, která používá WAS pro aktivaci mimo PROTOKOL HTTP
Jakmile provedete kroky instalace a konfigurace WAS (viz Postup: Instalace a konfigurace komponent aktivace WCF), konfigurace služby pro použití WAS k aktivaci je podobná konfiguraci služby hostované ve službě IIS.
Podrobné pokyny k vytvoření služby WCF aktivované systémem WAS naleznete v tématu Postupy: Hostování služby WCF v WAS.