Не удается найти V2Listener при вызове службы субъекта Service Fabric по URI

Пытаясь получить список всех актеров в службе актеров, я получаю AggregateException.

System.AggregateException: FabricInvalidAddressException: NamedEndpoint 'V2Listener' не найден по адресу '{"Endpoints":{"V2_1Listener":"LautarosMonster:30006+f87ebfe0-9f5c-435f-ac5a-a62ab13eda5d-1320596320190352a-5bbf7ac374-8 -339efc840b5b"}}" для раздела "f87ebfe0-9f5c-435f-ac5a-a62ab13eda5d"

Здесь я получаю UserActors:

       async public Task<List<string>> GetUserActors()
    {
        ContinuationToken continuationToken = null;
        CancellationToken cancellationToken = new CancellationTokenSource().Token;
        List<ActorInformation> activeActors = new List<ActorInformation>();

        do
        {
            var proxy = GetUserActorServiceProxy();
            PagedResult<ActorInformation> page = await proxy.GetActorsAsync(continuationToken, cancellationToken);

            activeActors.AddRange(page.Items.Where(x => x.IsActive));

            continuationToken = page.ContinuationToken;
        }
        while (continuationToken != null);

        return activeActors.Select(aa => aa.ActorId.ToString()).ToList();
    }

Я почти уверен, что правильно понял соглашение об именах URI. Вот как я получаю ActorServiceProxy

  public IActorService GetUserActorServiceProxy()
    {   
        var proxy = ActorServiceProxy.Create(new Uri("fabric:/ECommerce/UserActorService"), 0);
        return proxy;
    }

Имя приложения — «Электронная коммерция», а служба, которую я пытаюсь вызвать, — «UserActor».

Исключение выдается в строке PagedResult, где я вызываю proxy.GetActorsAsync


person Daarwin    schedule 25.06.2019    source источник


Ответы (1)


Похоже, это та же самая ошибка, о которой я упоминал здесь?

https://github.com/microsoft/service-fabric-services-and-actors-dotnet/issues/159

person Tim    schedule 26.06.2019
comment
Да! Я видел это только прошлой ночью. Я попробовал предложенное решение и использовал IActorService serviceProxy = ServiceProxy.Create‹IActorService›(новый Uri(serviceUris[i]), новый ServicePartitionKey(partitionKey)); вместо. Я больше не получаю ошибку, но, с другой стороны, она также не возвращает актеров. Это всегда ноль. Даже если я просто добавлю несколько актеров каждый раз, когда запускаю этот код, просто чтобы иметь несколько тестовых актеров. - person Daarwin; 26.06.2019