Represents a continuation for intercepting asynchronous client-streaming invocations.
A delegate of this type is passed to the AsyncClientStreamingCall method
when an outgoing invocation is being intercepted and calling the
delegate will invoke the next interceptor in the chain, or the underlying
call invoker if called from the last interceptor. The interceptor is
allowed to call it zero, one, or multiple times, passing it the appropriate
request value and context as it sees fit.
Represents a continuation for intercepting asynchronous duplex invocations.
A delegate of this type is passed to the AsyncDuplexStreamingCall method
when an outgoing invocation is being intercepted and calling the
delegate will invoke the next interceptor in the chain, or the underlying
call invoker if called from the last interceptor. The interceptor is
allowed to call it zero, one, or multiple times, passing it the appropriate
request value and context as it sees fit.
Represents a continuation for intercepting asynchronous server-streaming invocations.
A delegate of this type is passed to the AsyncServerStreamingCall method
when an outgoing invocation is being intercepted and calling the
delegate will invoke the next interceptor in the chain, or the underlying
call invoker if called from the last interceptor. The interceptor is
allowed to call it zero, one, or multiple times, passing it the appropriate
request value and context as it sees fit.
Represents a continuation for intercepting simple asynchronous invocations.
A delegate of this type is passed to the AsyncUnaryCall method
when an outgoing invocation is being intercepted and calling the
delegate will invoke the next interceptor in the chain, or the underlying
call invoker if called from the last interceptor. The interceptor is
allowed to call it zero, one, or multiple times, passing it the appropriate
request value and context as it sees fit.
Represents a continuation for intercepting simple blocking invocations.
A delegate of this type is passed to the BlockingUnaryCall method
when an outgoing invocation is being intercepted and calling the
delegate will invoke the next interceptor in the chain, or the underlying
call invoker if called from the last interceptor. The interceptor is
allowed to call it zero, one, or multiple times, passing it the appropriate
context and request values as it sees fit.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis document covers gRPC interceptors in .NET, with the latest version being 2.66.0, and also includes documentation for versions 2.63.0 and 2.48.0.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eCallInvokerExtensions\u003c/code\u003e and \u003ccode\u003eChannelExtensions\u003c/code\u003e provide functionalities to extend the \u003ccode\u003eCallInvoker\u003c/code\u003e class and register interceptors on \u003ccode\u003eChannel\u003c/code\u003e objects respectively, to manage client-side interceptor behavior.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eInterceptor\u003c/code\u003e class serves as the foundation for creating gRPC interceptors.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eClientInterceptorContext<TRequest, TResponse>\u003c/code\u003e carries the context for client-side intercepted invocations.\u003c/p\u003e\n"],["\u003cp\u003eSeveral delegates, such as \u003ccode\u003eInterceptor.AsyncUnaryCallContinuation<TRequest, TResponse>\u003c/code\u003e, \u003ccode\u003eInterceptor.BlockingUnaryCallContinuation<TRequest, TResponse>\u003c/code\u003e, \u003ccode\u003eInterceptor.AsyncClientStreamingCallContinuation<TRequest, TResponse>\u003c/code\u003e, \u003ccode\u003eInterceptor.AsyncDuplexStreamingCallContinuation<TRequest, TResponse>\u003c/code\u003e, and \u003ccode\u003eInterceptor.AsyncServerStreamingCallContinuation<TRequest, TResponse>\u003c/code\u003e, allow for intercepting different types of gRPC calls, passing the invocation to the next interceptor in the chain or to the underlying call invoker.\u003c/p\u003e\n"]]],[],null,["# Namespace Grpc.Core.Interceptors (2.66.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.66.0 (latest)](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors)\n- [2.63.0](/dotnet/docs/reference/Grpc.Core/2.63.0/Grpc.Core.Interceptors)\n- [2.48.0](/dotnet/docs/reference/Grpc.Core/2.48.0/Grpc.Core.Interceptors) \n\nClasses\n-------\n\n### [CallInvokerExtensions](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.CallInvokerExtensions)\n\nExtends the CallInvoker class to provide the interceptor facility on the client side.\n\n### [ChannelExtensions](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.ChannelExtensions)\n\nProvides extension methods to make it easy to register interceptors on Channel objects.\n\n### [Interceptor](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor)\n\nServes as the base class for gRPC interceptors.\n\nStructs\n-------\n\n### [ClientInterceptorContext\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.ClientInterceptorContext-2)\n\nCarries along the context associated with intercepted invocations on the client side.\n\nDelegates\n---------\n\n### [Interceptor.AsyncClientStreamingCallContinuation\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor.AsyncClientStreamingCallContinuation-2)\n\nRepresents a continuation for intercepting asynchronous client-streaming invocations.\nA delegate of this type is passed to the AsyncClientStreamingCall method\nwhen an outgoing invocation is being intercepted and calling the\ndelegate will invoke the next interceptor in the chain, or the underlying\ncall invoker if called from the last interceptor. The interceptor is\nallowed to call it zero, one, or multiple times, passing it the appropriate\nrequest value and context as it sees fit.\n\n### [Interceptor.AsyncDuplexStreamingCallContinuation\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor.AsyncDuplexStreamingCallContinuation-2)\n\nRepresents a continuation for intercepting asynchronous duplex invocations.\nA delegate of this type is passed to the AsyncDuplexStreamingCall method\nwhen an outgoing invocation is being intercepted and calling the\ndelegate will invoke the next interceptor in the chain, or the underlying\ncall invoker if called from the last interceptor. The interceptor is\nallowed to call it zero, one, or multiple times, passing it the appropriate\nrequest value and context as it sees fit.\n\n### [Interceptor.AsyncServerStreamingCallContinuation\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor.AsyncServerStreamingCallContinuation-2)\n\nRepresents a continuation for intercepting asynchronous server-streaming invocations.\nA delegate of this type is passed to the AsyncServerStreamingCall method\nwhen an outgoing invocation is being intercepted and calling the\ndelegate will invoke the next interceptor in the chain, or the underlying\ncall invoker if called from the last interceptor. The interceptor is\nallowed to call it zero, one, or multiple times, passing it the appropriate\nrequest value and context as it sees fit.\n\n### [Interceptor.AsyncUnaryCallContinuation\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor.AsyncUnaryCallContinuation-2)\n\nRepresents a continuation for intercepting simple asynchronous invocations.\nA delegate of this type is passed to the AsyncUnaryCall method\nwhen an outgoing invocation is being intercepted and calling the\ndelegate will invoke the next interceptor in the chain, or the underlying\ncall invoker if called from the last interceptor. The interceptor is\nallowed to call it zero, one, or multiple times, passing it the appropriate\nrequest value and context as it sees fit.\n\n### [Interceptor.BlockingUnaryCallContinuation\\\u003cTRequest, TResponse\\\u003e](/dotnet/docs/reference/Grpc.Core/latest/Grpc.Core.Interceptors.Interceptor.BlockingUnaryCallContinuation-2)\n\nRepresents a continuation for intercepting simple blocking invocations.\nA delegate of this type is passed to the BlockingUnaryCall method\nwhen an outgoing invocation is being intercepted and calling the\ndelegate will invoke the next interceptor in the chain, or the underlying\ncall invoker if called from the last interceptor. The interceptor is\nallowed to call it zero, one, or multiple times, passing it the appropriate\ncontext and request values as it sees fit."]]