2017-04-20 4 views
0

Ich habe eine IActor, die ich anrufen möchte, um einige einfache Erinnerung basierte Berechnung zu tun. Es ist wie so genannt:Azure: "Dienst existiert nicht" auf Schauspieler Anruf

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); 
} 

Wenn jedoch die SetupReminderAsync Methode aufgerufen wird, ich eine HRESULT: 0x80071BCD: Service does not exist Ausnahme erhalten. Ich bin mir nicht sicher, was das bedeutet, da ich deutlich sehen kann, dass der Dienst des Actors im Debug-Modus läuft. Ich könnte wirklich eine Anleitung dazu verwenden, was passiert. Vielen Dank!

Antwort

0

Es stellt sich heraus meine ITEM_SCHEDULER_URI nicht richtig war, weil ich einen Endpunkt angenommen anders als das, was tatsächlich besiedelt. Nach Überprüfung der ApplicationManifest konnte ich das Problem beheben.

1

Wird im lokalen Cluster Manager für Service Fabric ein Endpunkt für ActorService angezeigt? Ich habe dieses Problem gesehen, als ich vergessen habe, einen Endpunkt zu definieren. Wenn Sie den Standard ActorService verwenden, glaube ich, dass es seine eigenen definiert. Aber wenn Sie Ihre eigenen ActorService verwenden, Sie haben CreateServiceReplicaListeners() außer Kraft zu setzen und erstellen Sie selbst eine Beurteilung:

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

Das hat mich eine Weile gedauert, aber mein Problem war, dass ich im ActorProxy.Create Aufruf ganz die falsche Schnittstelle hatte. Das Service-Fabric registriert den Akteur weiterhin und kann im Service-Fabric-Explorer angezeigt werden, aber lassen Sie sich nicht täuschen.

Seien Sie nicht wie ich, prüfen Sie auf einfache Codierungsfehler, bevor Sie die Manifeste untersuchen.

Verwandte Themen