AspNetCore.Docs/aspnetcore/grpc/configuration.md

5.7 KiB

title author description monikerRange ms.author ms.custom ms.date no-loc uid
gRPC for .NET configuration jamesnk Learn how to configure gRPC for .NET apps. >= aspnetcore-3.0 jamesnk mvc 05/26/2020
ASP.NET Core Identity
cookie
Cookie
Blazor
Blazor Server
Blazor WebAssembly
Identity
Let's Encrypt
Razor
SignalR
grpc/configuration

gRPC for .NET configuration

Configure services options

gRPC services are configured with AddGrpc in Startup.cs. The following table describes options for configuring gRPC services:

Option Default Value Description
MaxSendMessageSize null The maximum message size in bytes that can be sent from the server. Attempting to send a message that exceeds the configured maximum message size results in an exception. When set to null, the message size is unlimited.
MaxReceiveMessageSize 4 MB The maximum message size in bytes that can be received by the server. If the server receives a message that exceeds this limit, it throws an exception. Increasing this value allows the server to receive larger messages, but can negatively impact memory consumption. When set to null, the message size is unlimited.
EnableDetailedErrors false If true, detailed exception messages are returned to clients when an exception is thrown in a service method. The default is false. Setting EnableDetailedErrors to true can leak sensitive information.
CompressionProviders gzip A collection of compression providers used to compress and decompress messages. Custom compression providers can be created and added to the collection. The default configured providers support gzip compression.
ResponseCompressionAlgorithm null The compression algorithm used to compress messages sent from the server. The algorithm must match a compression provider in CompressionProviders. For the algorithm to compress a response, the client must indicate it supports the algorithm by sending it in the grpc-accept-encoding header.
ResponseCompressionLevel null The compress level used to compress messages sent from the server.
Interceptors None A collection of interceptors that are run with each gRPC call. Interceptors are run in the order they are registered. Globally configured interceptors are run before interceptors configured for a single service. For more information about gRPC interceptors, see gRPC Interceptors vs. Middleware.
IgnoreUnknownServices false If true, calls to unknown services and methods don't return an UNIMPLEMENTED status, and the request passes to the next registered middleware in ASP.NET Core.

Options can be configured for all services by providing an options delegate to the AddGrpc call in Startup.ConfigureServices:

[!code-csharp]

Options for a single service override the global options provided in AddGrpc and can be configured using AddServiceOptions<TService>:

[!code-csharp]

Configure client options

gRPC client configuration is set on GrpcChannelOptions. The following table describes options for configuring gRPC channels:

Option Default Value Description
HttpHandler New instance The HttpMessageHandler used to make gRPC calls. A client can be set to configure a custom HttpClientHandler or add additional handlers to the HTTP pipeline for gRPC calls. If no HttpMessageHandler is specified, a new HttpClientHandler instance is created for the channel with automatic disposal.
HttpClient null The HttpClient used to make gRPC calls. This setting is an alternative to HttpHandler.
DisposeHttpClient false If set to true and an HttpMessageHandler or HttpClient is specified, then either the HttpHandler or HttpClient, respectively, is disposed when the GrpcChannel is disposed.
LoggerFactory null The LoggerFactory used by the client to log information about gRPC calls. A LoggerFactory instance can be resolved from dependency injection or created using LoggerFactory.Create. For examples of configuring logging, see xref:grpc/diagnostics#grpc-client-logging.
MaxSendMessageSize null The maximum message size in bytes that can be sent from the client. Attempting to send a message that exceeds the configured maximum message size results in an exception. When set to null, the message size is unlimited.
MaxReceiveMessageSize 4 MB The maximum message size in bytes that can be received by the client. If the client receives a message that exceeds this limit, it throws an exception. Increasing this value allows the client to receive larger messages, but can negatively impact memory consumption. When set to null, the message size is unlimited.
Credentials null A ChannelCredentials instance. Credentials are used to add authentication metadata to gRPC calls.
CompressionProviders gzip A collection of compression providers used to compress and decompress messages. Custom compression providers can be created and added to the collection. The default configured providers support gzip compression.

The following code:

  • Sets the maximum send and receive message size on the channel.
  • Creates a client.

[!code-csharp]

[!INCLUDE]

Additional resources