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:
- Создадим на диске C (или в любом другом месте) папку "MyServiceIIS".
- В данной папке создадим файл "MyService.svc".
- В данный файл добавим одну лишь строку: <%@ServiceHost Service="ServiceIISLibrary.MyIISService"%>.
- Также добавим сюда файл "Web.config".
- Создадим папку "bin" и в неё добавим файл ServiceIISLibrary.dll
Как добавить службы IIS в Windows 7?
Для этого необходимо зайти в панель управления — программы и компоненты — слева выбрать пункт "Включение и отключение компонентов Windows" — выбрать "Службы IIS" — Нажать ОК:
Давайте теперь откроем диспетчер служб IIS и добавим наш сайт. Заходим в панель управления — Администрирование — диспетчер служб IIS. Добавим виртуальный каталог:
Физический путь указываем к папке на диске C. Имя сайта указываем "MySite":
Преобразуем наш каталог в приложение:
Давайте теперь проверем, что всё работает. Откроем браузер и в строке укажем путь к сервису: http://localhost/MySite/MyService.svc
При переходе по данной ссылке иногда может возникнуть ошибка. В качестве решения я предлагаю зайти в папку C:\Windows\Microsoft.NET\Framework\v4.0.30319 и запустить в командной строке "aspnet_regiis -i".
В данной статье мы уже писали код клиента. В коде необходимо только поменять адрес на http://localhost/MySite/MyService.svc
Запустим клиент и увидим, что всё работает:
В данной статье вы узнали, как размещать сервис в службах IIS.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.