1. Создать схему Исходный код
- Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
-
На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).
-
В дизайнере схем заполните свойства схемы:
- Код (Code) — "UsrAnonymousConfigurationService".
- Заголовок (Title) — "AnonymousConfigurationService".
Для применения заданных свойств нажмите Применить (Apply).
2. Создать класс сервиса
- В дизайнере схем добавьте пространство имен, вложенное в Terrasoft.Configuration. Название может быть любым, например, UsrAnonymousConfigurationServiceNamespace.
- C помощью директивы using добавьте пространства имен, типы данных которых будут задействованы в классе.
- Добавьте название класса, которое соответствует названию схемы (свойство Код (Code)).
- В качестве родительского класса укажите класс Terrasoft.Nui.ServiceModel.WebService.BaseService.
- Для класса добавьте атрибуты [ServiceContract] и [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)].
- Для анонимного доступа к пользовательскому веб-сервису добавьте системное подключение SystemUserConnection.
3. Реализовать метод класса
В дизайнере схем добавьте в класс метод public string GetContactIdByName(string Name), который реализует конечную точку пользовательского веб-сервиса. С помощью EntitySchemaQuery метод отправит запрос к базе данных. В зависимости от значения параметра Name, отправленного в строке запроса, тело ответа на запрос будет содержать:
- Идентификатор контакта (типа строка) — если контакт найден.
- Идентификатор первого найденного контакта (типа строка) — если найдено несколько контактов.
- Пустую строку — если контакт не найден.
Укажите пользователя, от имени которого будет выполняться обработка данного http-запроса. Для этого после получения SystemUserConnection вызовите метод SessionHelper.SpecifyWebOperationIdentity пространства имен Terrasoft.Web.Common. Этот метод обеспечивает работоспособность бизнес-процессов при работе с сущностью (Entity) базы данных из пользовательского веб-сервиса с анонимной аутентификацией.
Исходный код пользовательского веб-сервиса UsrAnonymousConfigurationService представлен ниже.
На панели инструментов дизайнера нажмите Сохранить (Save), а затем Опубликовать (Publish).
4. Зарегистрировать пользовательский веб-сервис с анонимной аутентификацией
- Перейдите в каталог ..\Terrasoft.WebApp\ServiceModel.
-
Создайте файл UsrAnonymousConfigurationService.svc и добавьте в него запись.
Атрибут Service содержит полное имя класса веб-сервиса с указанием пространства имен.
5. Настроить пользовательский веб-сервис с анонимной аутентификацией для работы по протоколам http и https
-
Откройте файл ..\Terrasoft.WebApp\ServiceModel\http\services.config и добавьте в него запись.
- Аналогичную запись добавьте в файл ..\Terrasoft.WebApp\ServiceModel\https\services.config.
6. Настроить доступ к пользовательскому веб-сервису с анонимной аутентификацией для всех пользователей
- Откройте файл ..\Terrasoft.WebApp\Web.config.
-
Добавьте элемент <location>, определяющий относительный путь и права доступа к веб-сервису.
-
В атрибут value ключа AllowedLocations элемента <appSettings> добавьте относительный путь к веб-сервису.
7. Перезапустить приложение в IIS
Для применения изменений перезапустите приложение в IIS.
Результат выполнения примера
В результате выполнения примера в Creatio появится пользовательский веб-сервис UsrAnonymousConfigurationService с конечной точкой GetContactIdByName. К веб-сервису можно обращаться из браузера, как с предварительным вводом логина и пароля, так и без их использования.
Из браузера обратитесь к конечной точке GetContactIdByName веб-сервиса и в параметре Name передайте имя контакта.
Если контакт, указанный в параметре Name, найден в базе данных, то в свойстве GetContactIdByNameResult будет возвращено значение идентификатора контакта.
Если контакт, указанный в параметре Name, не найден в базе данных, то в свойстве GetContactIdByNameResult будет возвращена пустая строка.