在 Azure Durable Function 上调用 CreateCheckStatusResponse 时,Azurite 未给出与 Azure 存储模拟器相同的结果
Azurite not giving same results as Azure Storage Emulator when calling CreateCheckStatusResponse on Azure Durable Function
我有一个 Azure Durable 函数如下:
[FunctionName("Function1_HttpStart")]
public async Task<IActionResult> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequest req,
[DurableClient] IDurableOrchestrationClient starter,
ILogger log)
{
//code to get requestBodyContent from req hidden
var instanceId = await starter.StartNewAsync("MyOtherFunction", requestBodyContent);
return starter.CreateCheckStatusResponse(req, instanceId);
}
在最后一行中,在 Azure 存储模拟器中调用 CreateCheckStatusResponse
returns HTTP 202 并且持久函数以预期结果执行。
当我 运行 在由一个函数容器和一个 Azurite 容器组成的 Docker 编排中使用相同的代码时,持久函数仍然会以预期的结果执行 但是 CreateCheckStatusResponse
return 一个 HTTP 500。
我想了解为什么 HTTP return 代码在 2 个不同的环境中表现不同。
AppInsights 没有显示任何问题。
读取 the documentation 该方法不应该 return 500 除非我们专门设置第三个布尔参数。
使用 .NETCore 3.1
Azure Functions V3
所以我找到了解决方案 - 问题不是石青,这与 OP 无关。
在 docker.
中托管持久函数时会出现问题
我在 this post.
中找到了答案
只需添加以下配置:
WEBSITE_HOSTNAME=localhost:30042
我有一个 Azure Durable 函数如下:
[FunctionName("Function1_HttpStart")]
public async Task<IActionResult> HttpStart(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequest req,
[DurableClient] IDurableOrchestrationClient starter,
ILogger log)
{
//code to get requestBodyContent from req hidden
var instanceId = await starter.StartNewAsync("MyOtherFunction", requestBodyContent);
return starter.CreateCheckStatusResponse(req, instanceId);
}
在最后一行中,在 Azure 存储模拟器中调用 CreateCheckStatusResponse
returns HTTP 202 并且持久函数以预期结果执行。
当我 运行 在由一个函数容器和一个 Azurite 容器组成的 Docker 编排中使用相同的代码时,持久函数仍然会以预期的结果执行 但是 CreateCheckStatusResponse
return 一个 HTTP 500。
我想了解为什么 HTTP return 代码在 2 个不同的环境中表现不同。
AppInsights 没有显示任何问题。 读取 the documentation 该方法不应该 return 500 除非我们专门设置第三个布尔参数。
使用 .NETCore 3.1
Azure Functions V3
所以我找到了解决方案 - 问题不是石青,这与 OP 无关。
在 docker.
中托管持久函数时会出现问题
我在 this post.
只需添加以下配置:
WEBSITE_HOSTNAME=localhost:30042