Server interceptors
gRPC server interceptors intercept incoming RPC requests. What comes in, to the server.
Interceptor methods to override for server:
UnaryServerHandler: Intercepts a unary RPC.ClientStreamingServerHandler: Intercepts a client-streaming RPC.ServerStreamingServerHandler: Intercepts a server-streaming RPC.DuplexStreamingServerHandler: Intercepts a bidirectional-streaming RPC.
The signature is rather similar, but the method names follows the *Handler naming structure, suggesting that the specific method will 'handle' an incoming call.
Configure interceptors on servers
Configure on all services
Title
services.AddGrpc(options =>
{
options.Interceptors.Add<ServerLoggerInterceptor>();
});
Configure on a specific service
Title
.AddGrpc()
.AddServiceOptions<GreeterService>(options =>
{
options.Interceptors.Add<ServerLoggerInterceptor>();
});
When it comes to the execution, server interceptors are executed in the order they are added to the InterceptorCollection. First the global ones are executed, and then those configured for a single service(in the order they are added).