sql >> Databasteknik >  >> NoSQL >> Redis

ServiceStack:Återställa pipeline när du anropar en tjänst manuellt?

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 .




  1. Azure Table vs MongoDB på Azure

  2. Öka automatiskt i MongoDB för att lagra sekvens av unikt användar-ID

  3. importera JSON till mongoDB med pymongo

  4. Returnera den faktiska typen av ett fält i MongoDB