Ошибка надежной функции Azure "В настоящее время функции активности не зарегистрированы!"
Полное сообщение:
Function 'Function1 (Orchestrator)' failed with an error.
Reason: System.ArgumentException:
The function 'Function1_GetData' doesn't exist,
is disabled, or is not an activity function.
Additional info: No activity functions are currently registered!
[FunctionName("Function1")]
public static async Task<List<string>> RunOrchestrator([OrchestrationTrigger] DurableOrchestrationContext context) {
var outputs = new List<string>();
using (var efContext = new DbContext()) {
foreach (var s in efContext.Table) {
var x= await context.CallActivityAsync<bool>("Function2_GetSummonerChanges", s.Id);
outputs.Add(x.ToString());
}
}
context.ContinueAsNew(null);
return outputs;
}
[FunctionName("Function1_GetData")]
public static bool GetData(long Id) {
return true;
}
2 ответа
У вас нет определения для функции "Function2_GetSummonerChanges"
это может быть что-то вроде
[FunctionName("Function2_GetSummonerChanges")]
public static int MyActivityFunction([ActivityTrigger] int id, ILogger log)
{
// your logic
}
Взгляните на следующий пример и ссылку для получения дополнительной информации о строительных блоках функций Durable
https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-create-first-csharp
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace FunctionApp28
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<List<string>> RunOrchestrator(
[OrchestrationTrigger] DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "Seattle"));
outputs.Add(await context.CallActivityAsync<string>("Function1_Hello", "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
[FunctionName("Function1_Hello")]
public static string SayHello([ActivityTrigger] string name, ILogger log)
{
log.LogInformation($"Saying hello to {name}.");
return $"Hello {name}!";
}
[FunctionName("Function1_HttpStart")]
public static async Task<HttpResponseMessage> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")]HttpRequestMessage req,
[OrchestrationClient]DurableOrchestrationClient starter,
ILogger log)
{
// Function input comes from the request content.
string instanceId = await starter.StartNewAsync("Function1", null);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
}
}
В моем случае это произошло потому, что я пропустил добавление типа триггера в класс активности.
public async Task Run(
[ActivityTrigger])