我有一个Azure耐用功能,如下所示:
[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);
}
在最后一行中,对CreateCheckStatusResponse
的调用按Azure Storage Emulator中的预期返回HTTP 202,持久函数将以预期结果执行。
当我在由一个函数容器和一个Azurite容器组成的Docker编排中运行相同的代码时,持久函数仍然会执行,并产生预期结果,但CreateCheckStatusResponse
返回HTTP 500。
我想了解为什么HTTP返回代码在两种不同的环境中表现不同。
AppInsights没有显示任何问题。在阅读文档时,除非我们专门设置了第三个布尔参数,否则该方法不应该返回500。
使用.NETCore 3.1
Azure功能V3
所以我找到了一个解决方案-问题不是Azurite,这在OP中无关紧要。
在docker中托管持久函数时会出现问题
我在这篇文章中找到了答案。
只需添加以下配置:
WEBSITE_HOSTNAME=localhost:30042