1. Создать схему Исходный код
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).
-
В дизайнере исходного кода заполните свойства схемы:
- Код (Code) — "UsrEncodingService".
- Заголовок (Title) — "Сервис с нестандартной кодировкой" ("Service with custom encoding").
Для применения заданных свойств нажмите Применить (Apply).
2. Создать класс веб-сервиса
- В дизайнере схем добавьте пространство имен, которое вложено в Terrasoft.Configuration. Например, UsrEncodingServiceNamespace.
- C помощью директивы using добавьте пространства имен, типы данных которых задействованы в классе.
- Добавьте название класса, которое соответствует названию схемы (свойство Код (Code)).
- В качестве родительского класса укажите класс Terrasoft.Nui.ServiceModel.WebService.BaseService.
- Для класса добавьте атрибуты [ServiceContract] и [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)].
- Для анонимного доступа к пользовательскому веб-сервису добавьте системное подключение SystemUserConnection.
3. Реализовать метод класса веб-сервиса
- Реализуйте конечную точку пользовательского веб-сервиса. Для этого в дизайнере исходного кода добавьте в класс метод public string Test(string Name). В зависимости от значения параметра Name, которое указано в текстовой кодировке ISO-8859-1 и отправляется в строке запроса, тело ответа на запрос содержит значение этого же параметра в той же кодировке.
-
Укажите пользователя, от имени которого выполняется обработка текущего http-запроса. Для этого после получения SystemUserConnection вызовите метод SessionHelper.SpecifyWebOperationIdentity пространства имен Terrasoft.Web.Common. Этот метод обеспечивает работоспособность бизнес-процессов при работе с сущностью (Entity) базы данных из пользовательского веб-сервиса с анонимной аутентификацией.
Исходный код пользовательского веб-сервиса UsrEncodingService представлен ниже.
На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.
4. Зарегистрировать веб-сервис
- В каталоге ..\Terrasoft.WebApp\ServiceModel создайте файл UsrEncodingService.svc.
-
В файл UsrEncodingService.svc добавьте запись.
Атрибут Service содержит полное имя класса веб-сервиса с указанием пространства имен.
- Сохраните файл.
5. Зарегистрировать нестандартную текстовую кодировку
- В файл ..\Terrasoft.WebApp\ServiceModel\http\bindings.config добавьте секцию <customBinding>.
-
В секцию <customBinding> добавьте атрибуты:
- name элемента <binding> — "ISO88591Encoding".
- encoding элемента <customTextMessageEncoding> — "ISO-8859-1".
- manualAddressing элемента <httpTransport> — "true".
- Сохраните файл.
- В файл ..\Terrasoft.WebApp\ServiceModel\https\bindings.config добавьте аналогичную запись.
6. Настроить веб-сервис для работы по протоколам http и https
-
В файл ..\Terrasoft.WebApp\ServiceModel\http\services.config добавьте запись.
Атрибут binding содержит значение "<customBinding>", которое соответствует названию секции <customBinding> с регистрацией текстовой кодировки.
Атрибут bindingConfiguration содержит название зарегистрированной текстовой кодировки. Совпадает со значением атрибута name элемента <binding>, который задан на предыдущем шаге.
- Сохраните файл.
- В файл ..\Terrasoft.WebApp\ServiceModel\https\services.config добавьте аналогичную запись.
7. Настроить доступ к веб-сервису для всех пользователей
-
В файл ..\Terrasoft.WebApp\Web.config добавьте элемент <location>, который определяет относительный путь и права доступа к веб-сервису.
-
В файле ..\Terrasoft.WebApp\Web.config в атрибут value ключа AllowedLocations элемента <appSettings> добавьте относительный путь к веб-сервису.
- Сохраните файл.
8. Перезапустить приложение в IIS
Для применения изменений перезапустите приложение в IIS.
Результат выполнения примера
Для демонстрации результата выполнения примера используем инструмент тестирования запросов Postman. Работа с Postman описана в официальной документации Postman. Инструкция по использованию Postman для выполнения запросов к Creatio содержится в статье Выполнить запрос к Creatio в Postman. Инструкция по использованию Postman для вызова веб-сервиса содержится в статье Вызвать пользовательский веб-сервис с помощью Postman.
Чтобы посмотреть результат выполнения примера, выполните запрос к веб-сервису UsrEncodingService.
Настройки запроса, которые необходимо установить в Postman:
- Метод запроса: POST.
-
Строка запроса к методу Test пользовательского веб-сервиса UsrEncodingService.
-
Формат данных запроса (настраивается на вкладке Body).
- Установите опцию "raw".
- Выберите тип "XML".
- Заполните тело POST запроса. В теле запроса передайте символы в текстовой кодировке ISO-8859-1. О символах, которые используются в текстовой кодировке ISO-8859-1, читайте в Википедии.
В результате выполнения примера получен ответ на POST запрос. Формат ответа — XML, код — 200 OK. Тело ответа отображается на вкладке Body и содержит значение параметра Name тела запроса в текстовой кодировке ISO-8859-1.