В прошлой статье мы создавали простейший web-сервис.
Так как web-сервис это серверное приложение, то он должен быть размещен в среде, которая обеспечит к нему доступ клиентов. В этой части серии статей рассмотрим как разместить наш простейший web-сервис на IIS. Мы разместим наш сервис и сделаем его доступным по HTTP протоколу.
Рассмотрим два способа:
Добавим шаблон сайта по контекстному меню от решения:
Выбрать пустой веб-сайт ASP.NET.Расположение указать в файловой системе. Папку расположения указать отдельную в решении (т.е. указать новую папку внутри папки решения, папка будет создана автоматически).
Получится примерно вот так:
Далее назначим сайт запускаемым проектом.
Т.к. мы хотим чтобы наш сервис располагался на этом сайте, то необходимо добавить ссылку на сервис на сайт. Для этого в контекстном меню сайта выбираем "Добавить ссылку".
Выбрать Решение/Проекты. Наш сервис.
В результате у нас появилась папка Bin.
Если сейчас нажать на сайте Ctrl+F5 (Запуск без отладки), то получим следующую страницу:
Когда сайт работает у вас в трее будет значок IIS Express.
Когда новый сайт создается в VS IIS Express автоматически назначает ему порт.
Обычно IIS Express запускается из VS когда нужно отладить сайт. Если нужно IIS Express запустить во вне VS, то можно использовать следующую командную строку:
"C:\Program Files\IIS Express\iisexpress" /path:c:\myapp\ /port:[your_port] /clr:v4.0
В моем случае:
"C:\Program Files (x86)\IIS Express\IISExpress.exe" /path:D:\WCFClubProject\HelloService\HostWebSite /port:17587 /clr:v4.0
На текущий момент посмотреть (Ctrl+F5) WSDL сервиса не получилось, т.к. мы не обозначили web.config.
Добавим секцию system.servicemodel в конфиг:
Получилось:
Где:
Теперь добавив к адресу http://localhost:17587, то что мы написали в relativeAddress, то получим http://localhost:17587/HostWebSite/ARVIClubService.svc. Открыв эту ссылку мы увидим службу:
Чтобы потестировать наш сервис проще всего использовать SOAP UI.
Открываем утилиту и создаем новый проект:
Вписываем адрес WSDL, который у нас был на странице сервиса в последнем рисунке предыдущей главы.
Нажимаем "ОК" SOAP UI видит наш сервис:
П.С. У кого была ошибка вида "soap parsing wsdl error: Unexpected element: TAG_END", тому нужно выключить прокси:
Теперь открываем Request 1, заполняем параметр метода name, нажимаем кнопку Submit.
Сервис работает.
Подготовка папок и файлов:
Сделаем в папке проекта папку HostIIS, а в ней папку bin
Скопируем файл *.dll и *.pdb из папки bin/debug сервиса в созданную папку для IIS
Скопируем web.config из папки сайта для IIS Express в папку HostIIS
Создадим папки в нашем решении аналогичной структуры:
В каждую папку добавим те файлы которые там должны быть
Сделаем так, чтобы после построения сервиса файлы *.dll и *.pdb автоматически копировались в нашу новую bin. Для этого в свойствах нашего сервиса на событии после построения укажем переписывать собранные файлы в нашу новую bin.
xcopy "$(AssemblyName).dll" "D:\WCFClubProject\HelloService\HostIIS\bin" /Y xcopy "$(AssemblyName).pdb" "D:\WCFClubProject\HelloService\HostIIS\bin" /Y
Откроем диспетчер IIS (команда inetmgr в cmd). Если ничего не открывается, то у вас не установлены компоненты IIS, их нужно установить, а потом зарегистрировать aspnet_regiis.exe (подробнее в google);
Убедимся, что наш пул приложений по умолчанию использует .NET 4.0.30319. Для этого на списке пулов приложений, выбрать по умолчанию, посмотреть его свойства.
Добавим новое приложение к сайту по умолчанию
Укажем Имя, наш пул по умолчанию, и физический путь до папки которую мы делали специально для IIS.
Разрешим пользователям пула приложений читать с нашей папки.
Поправим relative address в web.config на relativeAddress="./ARVIClubService.svc"
Заходим на адрес http://localhost/ARVIClubService/ARVIClubService.svc
где:
Работает:
Также можно проверить через SOAP UI:
Прикрепляю папку всего решения
В точности эта версия и ни влево, ни вправо? Через год, например, это требование останется актуальным?
Насколько я понимаю, через год или три ничего не изменится, просто вариантов добавится, например, с пятым .NET Framework.
Там сейчас у всех три одинаковых варианта (у тебя тоже должно быть так).
Описано просто и доступно.
После текста:
"Добавим секцию system.servicemodel в конфиг:"
отображается набор пробелов(((
Спасибо огромное!
Авторизуйтесь, чтобы написать комментарий