首页 > 解决方案 > Azure 实体函数“从不”返回

问题描述

以下代码进入GetIds方法并且永远不会返回。

public static class ANameOrchestrator
{
    [FunctionName(CommonNames.AName)]
    public static async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context)
    {
        var entityId = new EntityId(nameof(Documents), CommonNames.DocFlowFifo);
        var px = context.CreateEntityProxy<IDocuments>(entityId);
        IEnumerable<int> list = await px.GetIds();//never return or throw
    }
}

我试图用这种方法包装方法调用,LockAsync在这种情况下,调用上的执行陷入僵局。

public static class ANameInOrchestrator
{
    [FunctionName(CommonNames.AName)]
    public static async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context)
    {

        IEnumerable<int> list;
        var entityId = new EntityId(nameof(Documents), CommonNames.DocFlowFifo);
        using (var lk = await context.LockAsync(entityId)) //never goes beyond the call to LockAync
        {
            var x = context.CreateEntityProxy<IDocuments>(entityId);
            list = await x.GetIds();
        }
     }          
 } 

如何解决问题?我必须看什么方向? 使用替代版本进行编辑 以调用实体操作也不起作用

list = await context.CallEntityAsync<IEnumerable<int>>(entityId, nameof(Documents.GetIds));

标签: c#azure-durable-functions

解决方案


推荐阅读