Работа с управляемым удостоверением с устойчивыми функциями работает нормально. Как только мы добавим триггерную функцию Q с той же учетной записью хранения, используя управляемое удостоверение, все перестанет работать.
Проблема в том, что устойчивые функции не вызываются, а статус выполнения находится в ожидании.
Кроме того, приложение функции триггера Q не срабатывает, когда Q передает в него данные. Поэтому нужен совет, как и любая проблема с зависимостями как с устойчивыми функциями, так и с триггерной функцией Q с управляемой идентификацией.
Если мы будем использовать только долговечный триггер или только Q-триггер с управляемой идентификацией — он будет работать нормально. Проблема в том, что мы используем оба.
[FunctionName("qtrigger")]
public void Run([QueueTrigger("b2b2devpoc", Connection = "QueueConnection")]string myQueueItem, ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}
Прочный функциональный код:
**[FunctionName("Function1")]
public static async Task<List<string>> RunOrchestrator(
[OrchestrationTrigger] IDurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "Seattle"));
outputs.Add(await context.CallActivityAsync<string>(nameof(SayHello), "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
[FunctionName(nameof(SayHello))]
public static string SayHello([ActivityTrigger] string name, ILogger log)
{
log.LogInformation("Saying hello to {name}.", name);
Thread.Sleep(3000);
return $"Hello {name}!";
}
[FunctionName("testfunction")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestMessage req,
[DurableClient] IDurableOrchestrationClient starter,
ILogger log)
{
// Function input comes from the request content.
string instanceId = await starter.StartNewAsync("Function1", null);
log.LogInformation("Started orchestration with ID = '{instanceId}'.", instanceId);
return starter.CreateCheckStatusResponse(req, instanceId);
}
}**
Прочный функциональный ответ:
{ "имя": "Функция1", "instanceId": "10f1f4cb1a5245499aa2aacafcf488cc", "runtimeStatus": "В ожидании", «вход»: ноль, «customStatus»: ноль, «выход»: ноль, "createTime": "2024-07-31T07:16:19Z", "lastUpdatedTime": "2024-07-31T07:16:19Z" }
Переменная окружения:
личность пользователя и выполнил шаги, упомянутые здесь — Learn.microsoft.com/en-us/azure/azure-functions/durable/…
вы пробуете это локально или на портале?
@IkhtesamAfrin — на лазурном портале.
Можете ли вы поделиться снимком экрана переменных среды, добавленных в приложение-функцию?
@IkhtesamAfrin - в вопрос добавлены скриншоты переменной env. Пожалуйста, помогите проверить.
Я внес следующие изменения, чтобы запустить функцию триггера очереди и функцию Durable в одном приложении-функции с использованием управляемого удостоверения, назначенного пользователем.
Вы можете проверить информацию о связанном приложении на наличие исключений, вызванных приложением-функцией.
Это сработало. Большое спасибо
вы используете удостоверение, назначенное системой или удостоверение, назначенное пользователем?