Redis
 sql >> Database >  >> NoSQL >> Redis

ServiceStack:ripristinare la pipeline quando si richiama un servizio manualmente?

Quali parti della pipeline sono andate perse?

Nessuna delle pipeline di richieste viene eseguita:

myRequestService.Any(e.Request);

Sta solo invocando fisicamente Any Metodo C# del tuo MyRequestService classe, non fa (né non può) fare nient'altro.

Il modo consigliato per richiamare altri Servizi durante una Richiesta di servizio consiste nell'utilizzare il Service Gateway.

Ma se desideri invocare un servizio al di fuori di una richiesta HTTP, puoi utilizzare il gateway RPC per eseguire servizi non attendibili poiché richiama l'intera pipeline delle richieste e converte le risposte di errore HTTP in risposte di errore tipizzate:

HostContext.AppHost.RpcGateway.ExecuteAsync()

Per eseguire servizi interni/affidabili al di fuori di una richiesta di servizio, puoi utilizzare HostContext.AppHost.ExecuteMessage come utilizzato da ServiceStack MQ che applica filtri di richiesta/risposta di richiesta di messaggio, filtri di azione di servizio ed eventi.

Mi sono registrato con container.AddScope

Non utilizzare le dipendenze con ambito richiesta al di fuori di una richiesta HTTP, utilizzare Singleton se le dipendenze sono ThreadSafe, altrimenti registrarle come transitorie. Se devi passare lo spazio di archiviazione per richiesta, passalo in IRequest.Items .