Sdílet prostřednictvím


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.

Viz také