Поделиться через


Настройка службы активации процессов Windows для использования с Windows Communication Foundation

В этом разделе описаны шаги, необходимые для настройки службы активации процесса Windows (также известной как WAS) в Windows Vista для размещения служб Windows Communication Foundation (WCF), которые не взаимодействуют по сетевым протоколам HTTP. Настройка предполагает следующие шаги.

  • Установите (или подтвердите установку) необходимых компонентов активации WCF.

  • Создайте узел WAS с привязками сетевых протоколов, которые планируется использовать, или добавьте новую привязку протокола в существующий узел.

  • Создайте приложение для размещения служб и разрешите этому приложению использовать требуемые сетевые протоколы.

  • Создайте службу WCF, которая предоставляет конечную точку без HTTP.

Настройка узла с привязками протоколов, отличных от HTTP

Для использования в сочетании со службой WAS привязки к протоколу, отличному от HTTP, необходимо добавить привязку узла в конфигурацию WAS. Хранилищем конфигурации для службы WAS является файл applicationHost.config, находящийся в каталоге %windir%\system32\inetsrv\config. Это хранилище конфигурации используется и службой WAS, и службами IIS 7.0.

applicationHost.config представляет собой текстовый XML-файл, который можно открыть в любом стандартном текстовом редакторе, таком как Блокнот. Однако средство настройки командной строки IIS 7.0 (appcmd.exe) является предпочтительным способом добавления привязок сайтов, отличных от HTTP.

Следующая команда добавляет в веб-узел по умолчанию привязку узла к протоколу net.tcp с помощью команды appcmd.exe (вводится как одна строка).

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

Эта команда добавляет новую привязку net.tcp в веб-узел по умолчанию путем добавления приведенной ниже строки в файл 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>  

Разрешение приложению использовать протоколы, отличные от HTTP

Вы можете включить или отключить отдельные сетевые протоколы на уровне приложения. Следующая команда иллюстрирует включение и протокола HTTP, и протокола net.tcp для приложения, выполняющегося на сайте Default Web Site.

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

Список включенных протоколов также можно задать в <элементе applicationDefaults> конфигурации XML сайта, хранящейся в applicationHost.config.

Следующий XML-код из файла applicationHost.config иллюстрирует сайт, привязанный и к протоколу 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  

Если появилось это сообщение об ошибке, убедитесь, что установлены и правильно настроены службы WAS для активации по протоколу, отличному от HTTP. Дополнительные сведения см. в разделе "Практическое руководство. Установка и настройка компонентов активации WCF".

Построение службы WCF, использующей WAS для активации по протоколу, отличному от HTTP

После выполнения действий по установке и настройке WAS (см . инструкции по установке и настройке компонентов активации WCF), настройка службы для активации аналогична настройке службы, размещенной в СЛУЖБАх IIS.

Подробные инструкции по созданию службы WCF с активацией WAS см. в статье "Практическое руководство. Размещение службы WCF в WAS".

См. также