WCF: размещение службы в IIS

WCF: размещение службы в IIS

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел рассказать, как WCF-службу разместить в IIS (Internet Information Services). Для этого создадим веб-проект (пустой сайт) в Visual Studio. В данном проекте нам нужен только файл Web.config.

В данный файл добавим следующий код:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.serviceModel>
    <services>
      <service name="ServiceIISLibrary.MyIISService" behaviorConfiguration="MEXServiceTypeBehavior">
        <endpoint address="" binding="basicHttpBinding" contract="ServiceIISLibrary.IContract" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MEXServiceTypeBehavior">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

В принципе, можно было и не создавать веб-проект, а просто вручную создать файл Web.config.

В текущем решении создадим ещё проект типа "Библиотека классов". Назовем его ServiceIISLibrary. Здесь добавим контракт и реализуем его:

using System.ServiceModel;

namespace ServiceIISLibrary
{
  [ServiceContract]
  interface IContract
  {
    [OperationContract]
    string Print(string str);
  }
  public class MyIISService: IContract
  {
    public string Print(string str) 
    {
      return "Ответ от IIS. Вы набрали: " + str;
    }
  }
}

Построим проект ServiceIISLibrary (правок кнопкой по проекту — Собрать) для того, чтобы сгенерировалась dll-библиотека.

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

  1. Создадим на диске C (или в любом другом месте) папку "MyServiceIIS".
  2. В данной папке создадим файл "MyService.svc".
  3. В данный файл добавим одну лишь строку: <%@ServiceHost Service="ServiceIISLibrary.MyIISService"%>.
  4. Также добавим сюда файл "Web.config".
  5. Создадим папку "bin" и в неё добавим файл ServiceIISLibrary.dll

Как добавить службы IIS в Windows 7?

Для этого необходимо зайти в панель управления — программы и компоненты — слева выбрать пункт "Включение и отключение компонентов Windows" — выбрать "Службы IIS" — Нажать ОК:

WCF: размещение службы в IIS

Давайте теперь откроем диспетчер служб IIS и добавим наш сайт. Заходим в панель управления — Администрирование — диспетчер служб IIS. Добавим виртуальный каталог:

WCF: размещение службы в IIS

Физический путь указываем к папке на диске C. Имя сайта указываем "MySite":

WCF: размещение службы в IIS

Преобразуем наш каталог в приложение:

WCF: размещение службы в IIS
WCF: размещение службы в IIS

Давайте теперь проверем, что всё работает. Откроем браузер и в строке укажем путь к сервису: http://localhost/MySite/MyService.svc

При переходе по данной ссылке иногда может возникнуть ошибка. В качестве решения я предлагаю зайти в папку C:\Windows\Microsoft.NET\Framework\v4.0.30319 и запустить в командной строке "aspnet_regiis -i".

В данной статье мы уже писали код клиента. В коде необходимо только поменять адрес на http://localhost/MySite/MyService.svc

Запустим клиент и увидим, что всё работает:

WCF: размещение службы в IIS

В данной статье вы узнали, как размещать сервис в службах IIS.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *