我在从 ADF 和 Postman 向持久函数(Azure Functions 的扩展)发出 post 请求时遇到问题
I am getting issue while making post request to durable functions (extension of Azure Functions) from ADF and from Postman
我可以从 ADF 和 postman 调用 azure 函数,但是当我从 ADF 或 postman 调用持久函数时,出现错误:
Operation on target Azure Function1 failed: Call to provided Azure function '' failed with status-'NotFound' and message - 'Invoking Azure function failed with HttpStatusCode - NotFound.'.
我已经尝试了所有方法,但不知道为什么会这样。我通过 functionApp 中的门户创建了持久函数,如下所示:
DurableFunctionsHttpStart1:
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req,
DurableOrchestrationClient starter,
ILogger log)
{
// Function input comes from the request content.
dynamic eventData = await req.Content.ReadAsAsync<object>();
// Pass the function name as part of the route
string instanceId = await starter.StartNewAsync("DurableFunctionsOrchestrator1", null);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
DurableFunctionsOrchestrator1:
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an HTTP starter function.
*
* Before running this sample, please:
* - create a Durable activity function (default name is "Hello")
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static async Task<List<string>> Run(DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "Hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Seattle"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
你好1:
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an orchestrator function.
*
* Before running this sample, please:
* - create a Durable orchestration function
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
using System;
using System.Threading;
public static string Run(string name)
{
Thread.Sleep(260000);
return $"Hello {name}!";
}
我从 ADF 端调用 DurableFunctionsHttpStart1 函数,这将调用 orchestrator 函数并调用 activity。请指导
更新:
在 ADF 上重现您的错误,这就是您现在面临的问题:
如果你在ADF中的函数是这样的,你会得到上面的错误。
(方法也需要post)
这是ADF中azure函数的配置应该是:
然后它在我的 ADF 上工作正常。
原答案:
这些代码在我这边运行良好:
DurableFunctionsHttpStart1
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req,
DurableOrchestrationClient starter,
string functionName,
ILogger log)
{
// Function input comes from the request content.
dynamic eventData = await req.Content.ReadAsAsync<object>();
// Pass the function name as part of the route
string instanceId = await starter.StartNewAsync("DurableFunctionsOrchestrator1", eventData);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
DurableFunctionsOrchestrator1
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an HTTP starter function.
*
* Before running this sample, please:
* - create a Durable activity function (default name is "Hello")
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static async Task<List<string>> Run(DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "Hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Seattle"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
你好1
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an orchestrator function.
*
* Before running this sample, please:
* - create a Durable orchestration function
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
using System;
using System.Threading;
public static string Run(string name)
{
Thread.Sleep(260000);
return $"Hello {name}!";
}
并且所有功能都触发良好,最后:
我可以从 ADF 和 postman 调用 azure 函数,但是当我从 ADF 或 postman 调用持久函数时,出现错误:
Operation on target Azure Function1 failed: Call to provided Azure function '' failed with status-'NotFound' and message - 'Invoking Azure function failed with HttpStatusCode - NotFound.'.
我已经尝试了所有方法,但不知道为什么会这样。我通过 functionApp 中的门户创建了持久函数,如下所示:
DurableFunctionsHttpStart1:
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req,
DurableOrchestrationClient starter,
ILogger log)
{
// Function input comes from the request content.
dynamic eventData = await req.Content.ReadAsAsync<object>();
// Pass the function name as part of the route
string instanceId = await starter.StartNewAsync("DurableFunctionsOrchestrator1", null);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
DurableFunctionsOrchestrator1:
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an HTTP starter function.
*
* Before running this sample, please:
* - create a Durable activity function (default name is "Hello")
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static async Task<List<string>> Run(DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "Hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Seattle"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
你好1:
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an orchestrator function.
*
* Before running this sample, please:
* - create a Durable orchestration function
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
using System;
using System.Threading;
public static string Run(string name)
{
Thread.Sleep(260000);
return $"Hello {name}!";
}
我从 ADF 端调用 DurableFunctionsHttpStart1 函数,这将调用 orchestrator 函数并调用 activity。请指导
更新: 在 ADF 上重现您的错误,这就是您现在面临的问题:
如果你在ADF中的函数是这样的,你会得到上面的错误。
这是ADF中azure函数的配置应该是:
然后它在我的 ADF 上工作正常。
原答案:
这些代码在我这边运行良好:
DurableFunctionsHttpStart1
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
#r "Newtonsoft.Json"
using System.Net;
public static async Task<HttpResponseMessage> Run(
HttpRequestMessage req,
DurableOrchestrationClient starter,
string functionName,
ILogger log)
{
// Function input comes from the request content.
dynamic eventData = await req.Content.ReadAsAsync<object>();
// Pass the function name as part of the route
string instanceId = await starter.StartNewAsync("DurableFunctionsOrchestrator1", eventData);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
return starter.CreateCheckStatusResponse(req, instanceId);
}
DurableFunctionsOrchestrator1
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an HTTP starter function.
*
* Before running this sample, please:
* - create a Durable activity function (default name is "Hello")
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static async Task<List<string>> Run(DurableOrchestrationContext context)
{
var outputs = new List<string>();
// Replace "Hello" with the name of your Durable Activity Function.
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Tokyo"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "Seattle"));
outputs.Add(await context.CallActivityAsync<string>("Hello1", "London"));
// returns ["Hello Tokyo!", "Hello Seattle!", "Hello London!"]
return outputs;
}
你好1
/*
* This function is not intended to be invoked directly. Instead it will be
* triggered by an orchestrator function.
*
* Before running this sample, please:
* - create a Durable orchestration function
* - create a Durable HTTP starter function
*/
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
using System;
using System.Threading;
public static string Run(string name)
{
Thread.Sleep(260000);
return $"Hello {name}!";
}
并且所有功能都触发良好,最后: