在 Azure Durable Function 上调用 CreateCheckStatusResponse 时,Azurite 的结果与 Azure 存储模拟器不同

问题描述

我有一个 Azure Durable 函数,如下所示:

import hashlib

x1 = "xyz SAMPLE Text XX 12345"
x2 = "Text XX and XX"


def replace_with_ignore(s,replace_dict,ignore_lst=[]):
    ignore_hash_d = {i: hashlib.sha1(i.encode()).hexdigest() for i in ignore_lst}
    for k,v in replace_dict.items():
        r = replace_dict[k]
        ignore_contains_set = set([i for i in ignore_lst if k in i])
        ignore_contains_list = sorted(list(ignore_contains_set),key=lambda x: len(x),reverse=True)
        for ic in ignore_contains_list:
            s = s.replace(ic,ignore_hash_d[ic])
        s = s.replace(k,r)
        for ic in ignore_contains_list:
            s = s.replace(ignore_hash_d[ic],ic)
    return s


print(replace_with_ignore(x1,{'XX': 'YY'}))
# xyz SAMPLE Text YY 12345
print(replace_with_ignore(x1,{'XX': 'YY'},['Text XX']))
# xyz SAMPLE Text XX 12345
print(replace_with_ignore(x2,{'XX': 'YY'}))
# Text YY and YY
print(replace_with_ignore(x2,['Text XX']))
# Text XX and YY

在最后一行中,对 [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 存储模拟器中按预期返回 HTTP 202,并且持久函数执行并得到预期结果。

当我在由函数容器和 Azurite 容器组成的 Docker 编排中运行相同的代码时,持久函数仍会以预期结果执行CreateCheckStatusResponse 返回 HTTP 500。

我想了解为什么 HTTP 返回代码在 2 种不同环境中的行为不同。

AppInsights 没有显示任何问题。 除非我们专门设置第三个布尔参数,否则读取 the documentation 方法不应返回 500。

使用 .NETCore 3.1
Azure 函数 V3

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)