Dela via


Konfigurera Aktiveringstjänsten för Windows-processer för användning med Windows Communication Foundation

I det här avsnittet beskrivs de steg som krävs för att konfigurera Windows Process Activation Service (även kallat WAS) i Windows Vista som värd för WCF-tjänster (Windows Communication Foundation) som inte kommunicerar via HTTP-nätverksprotokoll. I följande avsnitt beskrivs stegen för den här konfigurationen:

  • Installera (eller bekräfta installationen av) de WCF-aktiveringskomponenter som krävs.

  • Skapa en WAS-plats med de nätverksprotokollbindningar som du vill använda eller lägg till en ny protokollbindning till en befintlig plats.

  • Skapa ett program som är värd för dina tjänster och gör det möjligt för programmet att använda de nätverksprotokoll som krävs.

  • Skapa en WCF-tjänst som exponerar en icke-HTTP-slutpunkt.

Konfigurera en webbplats med icke-HTTP-bindningar

Om du vill använda en icke-HTTP-bindning med WAS måste platsbindningen läggas till i WAS-konfigurationen. Konfigurationsarkivet för WAS är filen applicationHost.config i katalogen %windir%\system32\inetsrv\config. Det här konfigurationsarkivet delas av både WAS och IIS 7.0.

applicationHost.config är en XML-textfil som kan öppnas med valfri standardtextredigerare (till exempel Anteckningar). Kommandoradskonfigurationsverktyget för IIS 7.0 (appcmd.exe) är dock det bästa sättet att lägga till icke-HTTP-platsbindningar.

Följande kommando lägger till en net.tcp-platsbindning till standardwebbplatsen med hjälp av appcmd.exe (det här kommandot anges som en enda rad).

appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']  

Det här kommandot lägger till den nya net.tcp-bindningen till standardwebbplatsen genom att lägga till raden nedan i filen 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>  

Aktivera ett program för användning av icke-HTTP-protokoll

Du kan aktivera eller inaktivera enskilda nätverksprotokoll på programnivå. Följande kommando visar hur du aktiverar både HTTP- och net.tcp-protokollen för ett program som körs i Default Web Site.

appcmd.exe set app "Default Web Site/appOne" /enabledProtocols:net.tcp  

Listan över aktiverade protokoll kan också anges i elementet <applicationDefaults> i platsens XML-konfiguration som lagras i ApplicationHost.config.

Följande XML-kod från applicationHost.config illustrerar en plats som är bunden till både HTTP- och icke-HTTP-protokoll. Den ytterligare konfiguration som krävs för att stödja icke-HTTP-protokoll anropas med kommentarer.

<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>  

Om du försöker aktivera en tjänst med WAS för icke-HTTP-aktivering och du inte har installerat och konfigurerat WAS kan följande fel visas:

[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  

Om du ser det här felet kontrollerar du att WAS för icke-HTTP-aktivering har installerats och konfigurerats korrekt. Mer information finns i Installera och konfigurera WCF-aktiveringskomponenter.

Skapa en WCF-tjänst som använder WAS för icke-HTTP-aktivering

När du utför stegen för att installera och konfigurera WAS (se Installera och konfigurera WCF-aktiveringskomponenter) liknar konfigurationen av en tjänst som ska använda WAS för aktivering att konfigurera en tjänst som finns i IIS.

Detaljerade anvisningar om hur du skapar en WAS-aktiverad WCF-tjänst finns i Så här: Värd för en WCF-tjänst i WAS.

Se även