Что это такое windows communication foundation non http activation

Ошибка при размещении службы WCF платформы .NET Framework 3,5 в Windows Server 2012 или Windows 8

В этой статье описывается устранение ошибки, возникающей при размещении службы Windows Communication Foundation (WCF) .NET Framework 3,5, которая использует активацию без HTTP в Windows Server 2012 или Windows 8.

Исходная версия продукта: Microsoft .NET Framework, Windows Communication Foundation, Windows Server 2012, Windows 8
Исходный номер статьи базы знаний: 2803161

Симптомы

Рассмотрим следующий сценарий.

  • Служба WCF платформы .NET Framework 3,5 размещена на одном из следующих компьютеров:
    • Компьютер, на котором выполняется чистая установка Windows Server 2012 или Windows 8.
    • Компьютер, на котором установлена версия Windows Server 2012, обновленная с Windows Server 2008 R2, или версия Windows 8, обновленная с Windows 7. Функция активации WCF, отличная от HTTP (например, NET). TCP) на этом компьютере не был включен до обновления компьютера до Windows Server 2012 или Windows 8.
  • Вызывается служба WCF, размещенная в Windows Server 2012 или Windows 8.

В этом сценарии отображается следующее сообщение об ошибке:

Исключение: System. InvalidOperationException: протоколу ‘ net. TCP ‘ не назначена реализация типа Хостедтранспортконфигуратион.
в System. ServiceModel. AsyncResult. End[тасинкресулт](IAsyncResult result)
в System. ServiceModel. Activation. Хостедхттпрекуестасинкресулт. end (результат IAsyncResult)

Эта проблема не возникает, если служба WCF .NET Framework 3,5 размещена в версии IIS, которая использует активацию без HTTP на компьютере под управлением Windows Server 2008 R2 или Windows 7.

Обходной путь

Чтобы обойти эту проблему, используйте один из указанных ниже способов.

Способ 1

Вручную измените корень файла Web.config . Для этого выполните указанные ниже действия.

При неправильном изменении *Web.configного * файла приложения ASP.NET могут перестать работать. Рекомендуется создать резервную копию файла Web.config перед его изменением.

Откройте следующий файл в текстовом редакторе, например в блокноте, в качестве администратора:

Добавьте следующий раздел конфигурации перед тегом.

Тег находится в нижней части файла.

Добавьте в файл следующие разделы конфигурации, если они еще не существуют:

После сохранения файла выполните те же действия, чтобы изменить следующий файл, а затем перезагрузите компьютер.

Рекомендуется применить этот метод для обхода проблемы, так как этот метод оказывает минимальное значение на компьютере. Эти изменения применяются только к Web.config файлу и не влияют на другие приложения ASP.NET.

Способ 2

Запустите SmconfigInstaller.exe, чтобы обновить файл Web.config .

Этот метод может обновить дополнительные конфигурации в Web.config и приложением IIS Host.config файлов, чем это необходимо для решения проблемы. Обновленные конфигурации зависят от того, сколько приложений ASP.NET 2,0, ASP.NET 3,0 и ASP.NET 3,5 размещаются и настраиваются на компьютере. При использовании этого метода необходимо соблюдать осторожность при использовании других приложений ASP.NET, которые не должны изменяться.

Чтобы запустить SMConfigInstaller.exe на компьютере под управлением 32-разрядной операционной системы, выполните указанные ниже действия.

В командной строки введите следующую команду, а затем нажмите клавишу Ввод:

%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\SMConfigInstaller.exe -c:install -f:tcp -f:pipe -f:msmq -f:http

Чтобы запустить SMConfigInstaller.exe на компьютере под управлением 64-разрядной операционной системы, выполните указанные ниже действия.

В командной строки 64, введите следующую команду и нажмите клавишу Ввод:

Читайте также:  Mandrake linux что это

%windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\SMConfigInstaller.exe -c:install -f:tcp -f:pipe -f:msmq -f:http

В командной строки 32, введите следующую команду и нажмите клавишу Ввод:

Windows Communication Foundation (WCF) служба

Windows Communication Foundation (WCF) — программный фреймворк, используемый для обмена данными между приложениями, входящий в состав .NET Framework. Другим словами, WCF – это программная платформа от Microsoft для создания, настройки и развертывания распределенных сетевых сервисов.

Давайте рассмотрим процесс создания и вызова службы WCF.

Создание службы WCF

Для начала необходимо создать новый проект WCF. Пусть наша Windows Communication Foundation служба будет возвращать количество оставшихся дней до нового года.

Visual studio создаст интерфейс и класс службы по умолчанию с именем IService1.cs и Service1.svc.

Нам необходимо переименовать их в соответствии с нашей предметной областью.

Давайте рассмотрим интерфейс INewYearService. Для начала нам необходимо в теле интерфейса объявить метод, который будет предоставлять служба для вызова. Для этого его необходимо пометить атрибутом [OperationContract].

Как вы видите данный метод возвращает экземпляр класса TimeToNewYear. Это вспомогательный класс, содержащий значения времени до нового года. Ниже приведена его структура. Для того, чтобы данный класс можно было использовать в качестве возвращаемого аргумента, его необходимо пометить атрибутом [DataContract], а свойства, доступные для чтения клиенту в возвращаемом значении помечаются атрибутом [DataMember].

Теперь нам остается реализовать интерфейс Windows Communication Foundation службы в классе NewYearService.svc.cs следующим образом:

Давайте проверим работу нашей службы wcf. Для этого нажмем кнопку Начать отладку. Обратите внимание, что возможные два варианта поведения системы. Если мы начнем отладку находясь в NewYearService.svc, от откроется отладчик службы. Во всех остальных случаях откроется окно браузера. Давайте рассмотрим каждый из вариантов подробнее.

Браузер

После запуска отладки отобразится браузер с файловой структурой нашей службы wcf.

Нам необходимо нажать на ссылку с именем нашей службы NewYearService.svc. Если все работает корректно, то мы увидим следующее окно, иначе будет показано сообщение с ошибкой.

Тестовый клиент WCF

В левой верхней части отладчика можно увидеть структура нашей службы wcf. Для проверки нашего метода выполним двойной щелчок левой кнопкой мыши по его имени. В правой части отладчика откроется форма запроса. Мы можем указать значение, которое будет передано в метод.

После установки передаваемых значений необходимо нажать кнопку Вызвать. Появится предупредительное сообщение. Можно смело ставить галочку Не выводить это сообщение в дальнейшем и нажимать кнопку ОК.

После этого в нижней правой части отладчика будет отображены значения возвращаемые нашей службой wcf.

Консольный клиент для WCF

Теперь нам необходимо создать клиент, который будет обращаться к нашей службе wcf. Для этого для начала создадим новое консольное приложение.

В созданном консольном приложении нам необходимо добавить ссылку на службу wcf.

В открывшимся окне службы необходимо указать имя службы wcf и ввести ее адрес.

Для простоты можно нажать кнопку Найти, тогда адрес службы wcf будет определен автоматически.

После этого необходимо развернуть дерево Windows Communication Foundation службы, чтобы удостоверится что выбран правильность выбора. В правой части должен быть отображен вызываемый метод.

Если настройка прошла корректно, то в обозревателе решения в консольном приложении отобразится ссылка на нашу службу wcf.

Теперь нам остается только обратиться к нашей службе, чтобы взывать метод и вывести результат на экран.

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

Web клиент для WCF

Теперь рассмотрим, как нам обратиться к службе wcf из веб-приложения. Процесс подключения службы не отличается от подключения в консольном приложении. Давайте рассмотрим как можно настроить авторизацию с помощью Windows. Это потребует дополнительной настройки приложения. Для начала создадим проект нового MVC приложения.

Нажимаем кнопку ОК, и попадаем в меню настройки создания веб-приложения. Выберем MVC шаблон и изменим способ авторизации. Для этого нажмем на кнопку Изменить способ проверки подлинности.

Читайте также:  Как избавиться от защитник windows 10

Выбираем авторизацию с помощью Windows и нажимаем ОК в обоих окнах.

Теперь необходимо будет подождать кое-то время, чтобы создался проект и все библиотеки были загружены и подключены.

Для того, чтобы IISExpres перестала ругаться на нас за попытку создания windows-аутентификации нужно сделать ряд действий в наше службе.

Нужно дополнить наш web.config

Добавляем в любую точку раздела , если отсутствует раздел webServer или дополняем уже существующий.

Находим раздел и в нем вставляем следующее.

Далее нужно указать разделы биндинг и сервис

Раздел дополняем такой вот строчкой. В ней мы говорим, что именно такая схема аутентификации будет использоваться у нас.

На этом настройка web.config заканчивается. В итоге у нас должен получиться файл примерно следующего содержания.

Настройка applicationhost.config

Далее идем в папку vs нашего проекта (она скрыта по умолчанию). В ней ищем папку config, а уже в ней находим файл applicationhost.config, его то нам нужно будет поправить.

Находим вот такой раздел. Все Deny меняем на Allow, разрешая изменение установленного по умолчанию режима аутентификации.

Далее находим данную настройку. В ней false меняем на true, разрешая механизму работать.

И под конец находим вот эту настройку. Тут мы true меняем на false. Говоря нашему IISExpres, чтобы он не блокировал службу windows-аутентификации.

После этого сохраняем все конфигурационные файлы и пробуем сделать ссылку на службу wcf аналогично как при добавлении службы в консольное приложение.

Изменим контроллер главной страницы web-приложения, чтобы взывать нашу службу wcf.

Теперь нам осталось только изменить представление, чтобы вывести результат работы Windows Communication Foundation службы на экран пользователя.

Получаем следующий результат работы веб-приложения.

Итоги WCF

Исходный код приложения можно скачать из репозитория https://github.com/shwanoff/wcf.

Мы подробно рассмотрели процесс создания и настройки Windows Communication Foundation службы, а также продемонстрировали как можно подключится к wcf через консольное и веб-приложение. Также рекомендую прочитать статью Принципы SOLID C#. И не забудьте подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов.

Настройка службы активации процессов Windows для использования с Windows Communication Foundation Configuring the Windows Process Activation Service for Use with Windows Communication Foundation

В этом разделе описываются шаги, необходимые для настройки службы активации Windows (также известной как WAS) в Windows Vista для размещения служб Windows Communication Foundation (WCF), не передающих сетевые протоколы HTTP. This topic describes the steps required to set up Windows Process Activation Service (also known as WAS) in Windows Vista to host Windows Communication Foundation (WCF) services that do not communicate over HTTP network protocols. Настройка предполагает следующие шаги. The following sections outline the steps for this configuration:

Установите (или подтвердите установку) необходимые компоненты активации WCF. Install (or confirm the installation of) the WCF activation components required.

Создайте узел WAS с привязками сетевых протоколов, которые планируется использовать, или добавьте новую привязку протокола в существующий узел. Create a WAS site with the network protocol bindings you wish to use, or add a new protocol binding to an existing site.

Создайте приложение для размещения служб и разрешите этому приложению использовать требуемые сетевые протоколы. Create an application to host your services and enable that application to use the required network protocols.

Создайте службу WCF, которая предоставляет конечную точку, отличную от HTTP. Build a WCF service that exposes a non-HTTP endpoint.

Настройка узла с привязками протоколов, отличных от HTTP Configuring a Site with Non-HTTP bindings

Для использования в сочетании со службой WAS привязки к протоколу, отличному от HTTP, необходимо добавить привязку узла в конфигурацию WAS. To use a non-HTTP binding with WAS, the site binding must be added to the WAS configuration. Хранилищем конфигурации для службы WAS является файл applicationHost.config, находящийся в каталоге %windir%\system32\inetsrv\config. The configuration store for WAS is the applicationHost.config file, located in the %windir%\system32\inetsrv\config directory. Это хранилище конфигурации используется и службой WAS, и службами IIS 7.0. This configuration store is shared by both WAS and IIS 7.0.

Читайте также:  Профессиональный музыкальный плеер для windows

applicationHost.config представляет собой текстовый XML-файл, который можно открыть в любом стандартном текстовом редакторе, таком как Блокнот. applicationHost.config is an XML text file that can be opened with any standard text editor (such as Notepad). Однако предпочтительным способом добавления привязок сайта, отличных от HTTP, является средство настройки командной строки IIS 7,0 (appcmd.exe). However, the IIS 7.0 command-line configuration tool (appcmd.exe) is the preferred way to add non-HTTP site bindings.

Следующая команда добавляет в веб-узел по умолчанию привязку узла к протоколу net.tcp с помощью команды appcmd.exe (вводится как одна строка). The following command adds a net.tcp site binding to the default Web site using appcmd.exe (this command is entered as a single line).

Эта команда добавляет новую привязку net.tcp в веб-узел по умолчанию путем добавления приведенной ниже строки в файл applicationHost.config. This command adds the new net.tcp binding to the default Web site by adding the line indicated below to the applicationHost.config file.

Разрешение приложению использовать протоколы, отличные от HTTP Enabling an Application to Use Non-HTTP Protocols

Вы можете включить или отключить отдельную сеть, протоколсат уровень приложения. You can enable or disable individual network protocolsat the application level. Следующая команда иллюстрирует включение и протокола HTTP, и протокола net.tcp для приложения, выполняющегося на сайте Default Web Site . The following command illustrates how to enable both the HTTP and net.tcp protocols for an application that runs in the Default Web Site .

Следующий XML-код из файла applicationHost.config иллюстрирует сайт, привязанный и к протоколу HTTP, и к протоколу, отличному от HTTP. The following XML code from applicationHost.config illustrates a site bound to both HTTP and non-HTTP protocols. Дополнительная конфигурация, необходимая для поддержки отличных от HTTP протоколов, выделена комментариями. The additional configuration required to support non-HTTP protocols is called out with comments.

При попытке запустить службу с помощью WAS для активации по протоколу, отличному от HTTP, когда службы WAS не установлены и не настроены, может появиться сообщение об ошибке: If you attempt to activate a service using WAS for Non-HTTP activation and you have not installed and configured WAS you may see the following error:

Если появилось это сообщение об ошибке, убедитесь, что установлены и правильно настроены службы WAS для активации по протоколу, отличному от HTTP. If you see this error ensure WAS for Non-HTTP Activation is installed and configured properly. Дополнительные сведения см. в разделе инструкции. Установка и настройка компонентов активации WCF. For more information, see How to: Install and Configure WCF Activation Components.

Построение службы WCF, использующей WAS для активации по протоколу, отличному от HTTP Building a WCF Service That Uses WAS for Non-HTTP activation

После выполнения действий по установке и настройке WAS (см. раздел как установить и настроить компоненты активации WCF) Настройка службы для использования была выполнена для активации аналогично настройке службы, размещенной в службах IIS. Once you perform the steps to install and configure WAS (see How to: Install and Configure WCF Activation Components), configuring a service to use WAS for activation is similar to configuring a service that is hosted in IIS.

Подробные инструкции по созданию активированной службы WCF см. в разделе как разместить службу WCF в WAS. For detailed instructions about building a WAS-activated WCF service, see How to: Host a WCF Service in WAS.

Оцените статью