2017-04-20 1 views
0

J'ai un IActor que je veux appeler pour faire un simple calcul basé sur un rappel. Il est appelé comme ceci:Azure: "Le service n'existe pas" sur l'appel d'acteur

var actorId = new ActorId($"item_{resp.ResultValue.Id}"); 
var scheduler = ActorProxy.Create<IScheduler>(actorId, ITEM_SCHEDUER_URI); 
try 
{ 
    await scheduler.SetupReminderAsync(new ItemInformation() 
    { 
     EntityId = entityId.ToString(), 
     Date = resp.ResultValue.AutoResolveOn 
    }).ConfigureAwait(false); 
} 

Cependant, chaque fois que la méthode SetupReminderAsync est appelée, je reçois une exception HRESULT: 0x80071BCD: Service does not exist. Je ne suis pas sûr de ce que cela signifie car je peux clairement voir le service de l'acteur tourner en mode débogage. Je pourrais vraiment utiliser quelques conseils sur ce qui se passe. Merci!

Répondre

0

Il se trouve mon ITEM_SCHEDULER_URI était pas correct parce que je supposais un point final différent de ce qui a été peuplé. Après avoir vérifié le ApplicationManifest j'ai été en mesure de résoudre le problème.

1

Voyez-vous un point de terminaison pour le ActorService dans le Gestionnaire de cluster local de Fabric Service? J'ai vu ce problème quand j'ai oublié de définir un point de terminaison. Si vous utilisez le ActorService par défaut, je crois qu'il définit le sien. Mais si vous utilisez votre propre coutume ActorService, vous devez remplacer CreateServiceReplicaListeners() et créer un vous-même:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners() 
{ 
    return new List<ServiceReplicaListener>(base.CreateServiceReplicaListeners()) 
    { 
     new ServiceReplicaListener(c => new FabricTransportServiceRemotingListener(c, this)), 
    }; 
} 
0

Cela m'a pris un certain temps, mais mon problème était que j'avais entièrement la mauvaise interface dans l'appel ActorProxy.Create. Le tissu de service enregistre toujours l'acteur et il peut être vu dans l'explorateur de structure de service, mais ne pas être dupé. Ne ressemblez pas à moi, vérifiez les erreurs de codage simples avant d'aller examiner les manifestes.