共用方式為


設定用於 Windows Communication Foundation 的 Windows Process Activation Service

本主題說明在 Windows Vista 中設定 Windows 處理序啟用服務 (也稱為 WAS),裝載無法透過 HTTP 網路通訊協定進行通訊的 Windows Communication Foundation (WCF) 服務時所需的步驟。 下列各節將概述此組態的各項步驟:

  • 安裝 (或確認安裝) 所需的 WCF 啟用元件。

  • 運用您希望使用的網路通訊協定繫結來建立 WAS 網站,或是將新通訊協定繫結新增至現有網站。

  • 建立應用程式來裝載服務,並啟用該應用程式來使用所需的網路通訊協定。

  • 建置可公開非 HTTP 端點的 WCF 服務。

使用非 HTTP 繫結來設定網站

若要以非 HTTP 繫結來搭配 WAS 一起使用,必須將網站繫結新增至 WAS 組態。 WAS 的組態存放區就是 applicationHost.config 檔 (位於 %windir%\system32\inetsrv\config 目錄)。 這個組態存取區可由 WAS 和 IIS 7.0 同時共用。

applicationHost.config 是一個可使用任何標準文字編輯器 (例如 [記事本]) 來開啟的 XML 文字檔。 但是,我們建議您使用 IIS 7.0 命令列設定工具 (appcmd.exe) 來新增非 HTTP 的網站繫結。

下列命令會使用 appcmd.exe 將 net.tcp 網站繫結新增至預設的網站 (此命令需以單行方式輸入)。

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

此命令會將下列所示字行新增至 applicationHost.config 檔,以將新的 net.tcp 繫結新增至預設的網站。

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

啟用應用程式來使用非 HTTP 通訊協定

您可以在應用層級啟用或停用個別網路協定。 下列命令說明如何針對在 Default Web Site 中執行的應用程式同時啟用 HTTP 和 net.tcp 通訊協定。

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

您也可以透過網站 XML 設定 (儲存於 ApplicationHost.config) 的 <applicationDefaults> 元素,設定啟用的通訊協定清單。

下列來自 applicationHost.config 的 XML 程式碼說明同時繫結至 HTTP 和非 HTTP 通訊協定的網站。 支援非 HTTP 通訊協定所需的額外組態可以藉由註解來呼叫。

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

如果您嘗試使用 WAS 進行非 HTTP 啟用以啟動服務,但是尚未安裝並設定 WAS,您可能會看到以下錯誤:

[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  

如果您收到這個錯誤,請確認已安裝並正確設定適用於非 HTTP 啟用的 WAS。 如需詳細資訊,請參閱如何:安裝和設定 WCF 啟用元件 (機器翻譯)

針對非 HTTP 啟動建置使用 WAS 的 WCF 服務

一旦執行了安裝與設定 WAS 的步驟 (請參閱如何:安裝和設定 WCF 啟用元件),設定使用 WAS 來進行啟用的服務,很類似設定 IIS 所裝載的服務。

如需建置啟用 WAS 的 WCF 服務詳細指示,請參閱如何:在 WAS 中裝載 WCF 服務 (機器翻譯)

另請參閱