У меня есть функция, которая позволяет конечному пользователю выполнять Workflow
(содержащий множество API) или планировать его запуск в качестве фонового задания.
Пример: User1
создает Workflow1
, который содержит 3 API (Api1
, Api2
, Api3
), и настраивает его на запуск в 9:00 каждый день.
Я использую HttpClient
для вызова каждого API следующим образом:
var client = new HttpClient { BaseAddress = new Uri("http://localhost/") };
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("/api/services/myApp/workflow/Api1?input=something", "").Result;
Как добавить учетные данные User1
в запрос, когда пользователь не вошел в приложение (поскольку оно будет запускаться автоматически как запланированное задание)?
Обновление 1
Я решил использовать отражение для вызова API с помощью имя строки.
В случае прямого запуска API, как мне запустить его с определенным разрешением?
Обновление 2
Я поместил свой код в блок using
, но все API успешно запустились:
using (_session.Use(1, 3)) // 3 is the Id of User1, who has no permissions
{
// Execute operator
switch (input.Operator.Type)
{
case "api":
executeApiResult = await ExecuteApi(input);
break;
case "procedure":
executeApiResult = await ExecuteProcedure(input);
break;
default:
return new ExecuteOperatorOutput
{
Result = new ExecuteOperatorResult { Status = false, Message = $"Wrong operator type: {input.Operator.Type}" },
WorkflowStatus = false
};
}
}