Orchestrator功能失败:活动功能失败:“无法解析功能名称”

时间:2020-10-09 06:57:00

标签: c# azure azure-functions azure-durable-functions

我有一个运行中的azure函数应用程序,其中添加了一个内部活动函数的子编排器。该应用程序的其余部分工作正常,但未添加代码。从日志中,我可以看到到达了子协调器,但是当它尝试点击活动功能时,它将在下面抛出错误。

函数'TestActivity(Orchestrator)'失败,并显示错误。原因:Microsoft.Azure.WebJobs.FunctionFailedException:活动功能'GetStringInput'失败:“无法解析功能名称'GetStringInput'。”。有关其他详细信息,请参见功能执行日志。 ---> System.InvalidOperationException:无法解析函数名称“ GetStringInput”。在Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.FunctionInstanceLogger.d__6.MoveNext()在C:\ projects \ azure-webjobs-sdk-script \ src \ WebJobs.Script.WebHost \ Diagnostics \ FunctionInstanceLogger.cs:line 80

这是客户协调器:

[FunctionName(FUNC_INITIALIZE)]
public static async Task<HttpResponseMessage> InitializeAsync(HttpRequestMessage req,
            [OrchestrationClient(TaskHub = "%Name%")]
            DurableOrchestrationClientBase client,
            ILogger logger)
{
  var body = new BodyObject {Something:"inside"};
  var instance_id = await client.StartNewAsync(FUNC_RELEASE, body);
  return req.CreateResponse(HttpStatusCode.Accepted);
}

编排:

[FunctionName(FUNC_RELEASE)]
public static async Task<string> Release(
                                   [OrchestrationTrigger]  DurableOrchestrationContextBase ctx,
                                   ILogger log)
{
  var ctx_obj = ctx.GetInput<BodyObject>();
  var response = await ctx.CallSubOrchestratorAsync<int>(FUNC_ORCHESTRATE_MORE, JsonConvert.SerializeObject(ctx_json));
  //do stuff with response
  return new ResultObject = {Result:"response"};
}

另一位协调员:

[FunctionName(FUNC_ORCHESTRATE_MORE)]
public static async Task<string> OrchestrateMore(
                                   [OrchestrationTrigger]  
                                   DurableOrchestrationContextBase ctx,
                                   ILogger log)
{
  var input = ctx.GetInput<string>();
  //do stuff
  var inpu_json = JsonConvert.SerilializeObject(input);
  var response = await ctx.CallActivityAsync<int>(FUNC_ACTIVITY, input_json);
  //do stuff with response
  return JsonConvert.SerializeObject(new ResultObject = {Result:"response"});
}

活动

[FunctionName(FUNC_ACTIVITY)]
public static async Task<string> DoingActivity(
                                   [ActivityTrigger]  string input,
                                   ILogger log)
{
  //do stuff with input
  return string_of_info;
}

从门户网站,我可以看到活动功能存在并已启用。将活动功能的签名更改为使用类型DurableActivityContext会产生相同的结果。从门户网站内部提交请求只会在添加的活动上而不是现有活动上产生404 not found错误。

其他信息:

.NET 472,
Microsoft.Azure.WebJobs v2.3.0,
Microsoft.Azure.WebJobs.Http v1.2.0,
Microsoft.Azure.WebJobs.Extensions.DurableTask v1.8.4
Microsoft.Azure.WebJobs.ServiceBus v2.2.0
Microsoft.NET.Sdk.Functions v1.0.29

正在通过Azure DevOps部署应用。

任何帮助将不胜感激!

0 个答案:

没有答案