Udostępnij za pośrednictwem


Konfigurowanie usługi aktywacji procesów systemu Windows do użycia z programem Windows Communication Foundation

W tym temacie opisano kroki wymagane do skonfigurowania usługi aktywacji procesów systemu Windows (znanej również jako WAS) w systemie Windows Vista do hostowania usług Windows Communication Foundation (WCF), które nie komunikują się za pośrednictwem protokołów sieciOWYCH HTTP. W poniższych sekcjach opisano kroki tej konfiguracji:

  • Zainstaluj (lub potwierdź instalację) wymagane składniki aktywacji programu WCF.

  • Utwórz lokację WAS z powiązaniami protokołu sieciowego, których chcesz użyć, lub dodaj nowe powiązanie protokołu do istniejącej lokacji.

  • Utwórz aplikację do hostowania usług i włącz tę aplikację do korzystania z wymaganych protokołów sieciowych.

  • Utwórz usługę WCF, która uwidacznia punkt końcowy inny niż HTTP.

Konfigurowanie lokacji przy użyciu powiązań innych niż HTTP

Aby można było używać powiązania innego niż HTTP z usługą WAS, należy dodać powiązanie lokacji do konfiguracji WAS. Magazynem konfiguracji programu WAS jest plik applicationHost.config znajdujący się w katalogu %windir%\system32\inetsrv\config. Ten magazyn konfiguracji jest współużytkowany przez usługi WAS i IIS 7.0.

applicationHost.config to plik tekstowy XML, który można otworzyć za pomocą dowolnego standardowego edytora tekstu (na przykład Notatnik). Jednak narzędzie konfiguracji wiersza polecenia usług IIS 7.0 (appcmd.exe) jest preferowanym sposobem dodawania powiązań witryn innych niż HTTP.

Następujące polecenie dodaje powiązanie witryny net.tcp do domyślnej witryny sieci Web przy użyciu appcmd.exe (to polecenie jest wprowadzane jako pojedynczy wiersz).

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

To polecenie dodaje nowe powiązanie net.tcp do domyślnej witryny sieci Web, dodając wiersz wskazany poniżej do pliku 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>  

Włączanie aplikacji do używania protokołów innych niż HTTP

Można włączyć lub wyłączyć poszczególne protokoły sieciowe na poziomie aplikacji. Poniższe polecenie ilustruje sposób włączania protokołów HTTP i net.tcp dla aplikacji działającej w pliku Default Web Site.

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

Listę włączonych protokołów można również ustawić w <elemecie applicationDefaults> konfiguracji XML lokacji przechowywanej w pliku ApplicationHost.config.

Poniższy kod XML z pliku applicationHost.config ilustruje witrynę powiązaną zarówno z protokołami HTTP, jak i innych niż HTTP. Dodatkowa konfiguracja wymagana do obsługi protokołów innych niż HTTP jest wywoływana z komentarzami.

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

Jeśli próbujesz aktywować usługę przy użyciu funkcji WAS dla aktywacji nieobsługiwanej przez protokół HTTP i nie zainstalowano i skonfigurowano usługę WAS, może zostać wyświetlony następujący błąd:

[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  

Jeśli ten błąd zostanie wyświetlony, upewnij się, że funkcja WAS dla aktywacji niezwiązanej z protokołem HTTP jest zainstalowana i skonfigurowana prawidłowo. Aby uzyskać więcej informacji, zobacz How to: Install and Configure WCF Activation Components (Instrukcje: instalowanie i konfigurowanie składników aktywacji WCF).

Tworzenie usługi WCF korzystającej z usługi WAS na potrzeby aktywacji bez protokołu HTTP

Po wykonaniu kroków instalacji i skonfigurowania programu WAS (zobacz Instrukcje: Instalowanie i konfigurowanie składników aktywacji programu WCF), konfigurowanie usługi do korzystania z usługi WAS na potrzeby aktywacji jest podobne do konfigurowania usługi hostowanej w usługach IIS.

Aby uzyskać szczegółowe instrukcje dotyczące tworzenia usługi WCF aktywowanej przez was, zobacz Instrukcje: hostowanie usługi WCF w programie WAS.

Zobacz też