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.