Vilka delar av rörledningen går förlorade?
Ingen av begäran pipeline exekveras:
myRequestService.Any(e.Request);
Anropar fysiskt bara Any
C#-metoden för din MyRequestService
klass, det gör (inte heller kan) något annat.
Det rekommenderade sättet att anropa andra tjänster under en tjänsteförfrågan är att använda Service Gateway.
Men om du vill anropa en tjänst utanför en HTTP-begäran kan du använda RPC-gatewayen för att köra icke-betrodda tjänster eftersom den anropar hela Request Pipeline och konverterar HTTP-felsvar till typade felsvar:
HostContext.AppHost.RpcGateway.ExecuteAsync()
För att exekvera interna/betrodda tjänster utanför en tjänsteförfrågan kan du använda HostContext.AppHost.ExecuteMessage som används av ServiceStack MQ som tillämpar meddelandeförfrågan/svarsfilter, serviceåtgärdsfilter och händelser.
Jag har registrerat mig hos container.AddScoped
Använd inte Request Scoped-beroenden utanför en HTTP-förfrågan, använd Singleton om beroenden är ThreadSafe, annars registrera dem som Transient. Om du behöver skicka lagring per begäran skicka dem i IRequest.Items
.