Welche Teile der Pipeline gehen verloren?
Keine der Anfragepipelines wird ausgeführt:
myRequestService.Any(e.Request);
Ruft physisch nur Any
auf C#-Methode Ihres MyRequestService
Klasse, es tut (noch kann) nichts anderes.
Die empfohlene Methode zum Aufrufen anderer Dienste während einer Dienstanforderung ist die Verwendung des Dienst-Gateways.
Wenn Sie jedoch einen Dienst außerhalb einer HTTP-Anforderung aufrufen möchten, können Sie das RPC-Gateway zum Ausführen nicht vertrauenswürdiger Dienste verwenden, da es die vollständige Anforderungspipeline aufruft und HTTP-Fehlerantworten in typisierte Fehlerantworten umwandelt:
HostContext.AppHost.RpcGateway.ExecuteAsync()
Zum Ausführen interner/vertrauenswürdiger Dienste außerhalb einer Dienstanforderung können Sie HostContext.AppHost.ExecuteMessage verwenden, wie es von ServiceStack MQ verwendet wird, das Nachrichtenanforderungs-Anforderungs-/Antwortfilter, Dienstaktionsfilter und Ereignisse anwendet.
Ich habe mich bei container.AddScoped
registriert
Verwenden Sie keine Request Scoped-Abhängigkeiten außerhalb einer HTTP-Anforderung, verwenden Sie Singleton, wenn die Abhängigkeiten ThreadSafe sind, und registrieren Sie sie andernfalls als Transient. Wenn Sie die Speicherung pro Anfrage übergeben müssen, übergeben Sie sie in IRequest.Items
.