Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Warning
Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Important
Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.
För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .
Konfigurera tjänstalternativ
gRPC-tjänster konfigureras med AddGrpc i Startup.cs. Konfigurationsalternativ finns i paketet Grpc.AspNetCore.Server .
I följande tabell beskrivs alternativ för att konfigurera gRPC-tjänster:
| Option | Default Value | Description |
|---|---|---|
MaxSendMessageSize |
null |
Den maximala meddelandestorleken i byte som kan skickas från servern. Försök att skicka ett meddelande som överskrider den konfigurerade maximala meddelandestorleken resulterar i ett undantag. När värdet nullär är meddelandestorleken obegränsad. |
MaxReceiveMessageSize |
4 MB | Den maximala meddelandestorleken i byte som kan tas emot av servern. Om servern får ett meddelande som överskrider den här gränsen utlöser den ett undantag. Om du ökar det här värdet kan servern ta emot större meddelanden, men kan påverka minnesförbrukningen negativt. När värdet nullär är meddelandestorleken obegränsad. |
EnableDetailedErrors |
false |
Om truereturneras detaljerade undantagsmeddelanden till klienter när ett undantag utlöses i en tjänstmetod. Standardvärdet är false. Inställningen EnableDetailedErrors till true kan läcka känslig information. |
CompressionProviders |
gzip | En samling komprimeringsprovidrar som används för att komprimera och dekomprimera meddelanden. Anpassade komprimeringsproviders kan skapas och läggas till i samlingen. Standardkonfigurerade leverantörer stöder gzip-komprimering . |
ResponseCompressionAlgorithm |
null |
Komprimeringsalgoritmen som används för att komprimera meddelanden som skickas från servern. Algoritmen måste matcha en komprimeringsprovider i CompressionProviders. För att algoritmen ska komprimera ett svar måste klienten ange att den stöder algoritmen genom att skicka den i sidhuvudet grpc-accept-encoding . |
ResponseCompressionLevel |
null |
Den komprimeringsnivå som används för att komprimera meddelanden som skickas från servern. |
Interceptors |
None | En samling interceptorer som körs med varje gRPC-anrop. Interceptorer körs i den ordning de registreras. Globalt konfigurerade interceptorer körs innan interceptorer konfigureras för en enda tjänst. Interceptorer har en livslängd per begäran som standard. Konstruktorn för interceptor anropas och parametrar matchas från beroendeinmatning (DI). En skärningspunktstyp kan också registreras med DI för att åsidosätta hur den skapas och dess livslängd. Interceptorer erbjuder liknande funktioner jämfört med ASP.NET Core-mellanprogram. Mer information finns i gRPC Interceptors vs. Middleware. |
IgnoreUnknownServices |
false |
Om truereturnerar anrop till okända tjänster och metoder inte en UNIMPLEMENTED-status och begäran skickas till nästa registrerade mellanprogram i ASP.NET Core. |
Alternativ kan konfigureras för alla tjänster genom att tillhandahålla ett alternativdelegat till anropet AddGrpc i Startup.ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.EnableDetailedErrors = true;
options.MaxReceiveMessageSize = 2 * 1024 * 1024; // 2 MB
options.MaxSendMessageSize = 5 * 1024 * 1024; // 5 MB
});
}
Alternativ för en enskild tjänst åsidosätter de globala alternativ som anges i AddGrpc och kan konfigureras med hjälp av AddServiceOptions<TService>:
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc().AddServiceOptions<MyService>(options =>
{
options.MaxReceiveMessageSize = 2 * 1024 * 1024; // 2 MB
options.MaxSendMessageSize = 5 * 1024 * 1024; // 5 MB
});
}
Tjänstavlyssnare har en livslängd per begäran som standard. Om du registrerar interceptor-typen med DI åsidosätts hur en interceptor skapas och dess livslängd.
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.Interceptors.Add<LoggingInterceptor>();
});
services.AddSingleton<LoggingInterceptor>();
}
ASP.NET Core-serveralternativ
Grpc.AspNetCore.Server hanteras av en ASP.NET Core-webbserver. Det finns ett antal alternativ för ASP.NET Core-servrar, inklusive Kestrel, IIS och HTTP.sys. Varje server erbjuder ytterligare alternativ för hur HTTP-begäranden hanteras.
Servern som används av en ASP.NET Core-app konfigureras i appens startkod. Standardservern är Kestrel.
Mer information om de olika servrarna och deras konfigurationsalternativ finns i:
- Kestrel webbserver i ASP.NET Core
- HTTP.sys webbserverimplementering i ASP.NET Core
- Köra ASP.NET Core på Windows med IIS
Konfigurera klientalternativ
gRPC-klientkonfigurationen är inställd på GrpcChannelOptions. Konfigurationsalternativ finns i paketet Grpc.Net.Client .
I följande tabell beskrivs alternativ för att konfigurera gRPC-kanaler:
| Option | Default Value | Description |
|---|---|---|
HttpHandler |
New instance | Används HttpMessageHandler för att göra gRPC-anrop. En klient kan ställas in för att konfigurera en anpassad HttpClientHandler eller lägga till ytterligare hanterare i HTTP-pipelinen för gRPC-anrop. Om nej HttpMessageHandler anges skapas en ny HttpClientHandler instans för kanalen med automatisk bortskaffande. |
HttpClient |
null |
Används HttpClient för att göra gRPC-anrop. Den här inställningen är ett alternativ till HttpHandler. |
DisposeHttpClient |
false |
Om anges till true och en HttpMessageHandler eller HttpClient anges, tas antingen HttpHandler eller HttpClient, respektive, bort när tas GrpcChannel bort. |
LoggerFactory |
null |
Den LoggerFactory som används av klienten för att logga information om gRPC-anrop. En LoggerFactory instans kan lösas från beroendeinmatning eller skapas med hjälp av LoggerFactory.Create. Exempel på hur du konfigurerar loggning finns i Loggning och diagnostik i gRPC på .NET. |
MaxSendMessageSize |
null |
Den maximala meddelandestorleken i byte som kan skickas från klienten. Försök att skicka ett meddelande som överskrider den konfigurerade maximala meddelandestorleken resulterar i ett undantag. När värdet nullär är meddelandestorleken obegränsad. |
MaxReceiveMessageSize |
4 MB | Den maximala meddelandestorleken i byte som kan tas emot av klienten. Om klienten får ett meddelande som överskrider den här gränsen utlöser den ett undantag. Genom att öka det här värdet kan klienten ta emot större meddelanden, men kan påverka minnesförbrukningen negativt. När värdet nullär är meddelandestorleken obegränsad. |
Credentials |
null |
En ChannelCredentials instans. Autentiseringsuppgifter används för att lägga till autentiseringsmetadata i gRPC-anrop. |
CompressionProviders |
gzip | En samling komprimeringsprovidrar som används för att komprimera och dekomprimera meddelanden. Anpassade komprimeringsproviders kan skapas och läggas till i samlingen. Standardkonfigurerade leverantörer stöder gzip-komprimering . |
ThrowOperationCanceledOnCancellation |
false |
Om värdet är trueinställt på utlöss OperationCanceledException klienter när ett anrop avbryts eller dess tidsgräns överskrids. |
UnsafeUseInsecureChannelCallCredentials |
false |
Om värdet trueär , CallCredentials tillämpas på gRPC-anrop som görs av en osäker kanal. Att skicka autentiseringshuvuden via en osäker anslutning har säkerhetskonsekvenser och bör inte göras i produktionsmiljöer. |
MaxRetryAttempts |
5 | Maximalt antal återförsök. Det här värdet begränsar alla försöks- och säkringsförsöksvärden som anges i tjänstkonfigurationen. Om du anger enbart det här värdet aktiveras inte återförsök. Återförsök aktiveras i tjänstkonfigurationen, vilket kan göras med hjälp av ServiceConfig. Ett null värde tar bort gränsen för maximalt antal återförsök. Mer information om återförsök finns i Tillfälliga felhantering med gRPC-återförsök. |
MaxRetryBufferSize |
16 MB | Den maximala buffertstorleken i byte som kan användas för att lagra skickade meddelanden vid återförsök eller säkring av anrop. Om buffertgränsen överskrids görs inga fler återförsök och alla säkringsanrop men ett avbryts. Den här gränsen tillämpas för alla anrop som görs med hjälp av kanalen. Ett null värde tar bort gränsen för maximal buffertstorlek för återförsök. |
MaxRetryBufferPerCallSize |
1 MB | Den maximala buffertstorleken i byte som kan användas för att lagra skickade meddelanden vid återförsök eller säkring av anrop. Om buffertgränsen överskrids görs inga fler återförsök och alla säkringsanrop men ett avbryts. Den här gränsen tillämpas på ett anrop. Ett null värde tar bort gränsen för maximal buffertstorlek för återförsök per anrop. |
ServiceConfig |
null |
Tjänstkonfigurationen för en gRPC-kanal. En tjänstkonfiguration kan användas för att konfigurera gRPC-återförsök. |
Följande kod:
- Anger den maximala storleken för skicka och ta emot meddelanden på kanalen.
- Skapar en klient.
static async Task Main(string[] args)
{
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
MaxReceiveMessageSize = 5 * 1024 * 1024, // 5 MB
MaxSendMessageSize = 2 * 1024 * 1024 // 2 MB
});
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
}
Observera att klientavlyssnare inte har konfigurerats med GrpcChannelOptions. I stället konfigureras klientavlyssnare med hjälp av Intercept tilläggsmetoden med en kanal. Den här tilläggsmetoden finns i Grpc.Core.Interceptors namnområdet.
static async Task Main(string[] args)
{
var channel = GrpcChannel.ForAddress("https://localhost:5001");
var callInvoker = channel.Intercept(new LoggingInterceptor());
var client = new Greeter.GreeterClient(callInvoker);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
}
System.Net-hanteringsalternativ
Grpc.Net.Client använder en HTTP-transport som härleds från HttpMessageHandler för att göra HTTP-begäranden. Varje hanterare erbjuder ytterligare alternativ för hur HTTP-begäranden görs.
Hanteraren är konfigurerad på en kanal och kan åsidosättas genom att ange GrpcChannelOptions.HttpHandler. .NET Core 3 och .NET 5 eller senare används SocketsHttpHandler som standard. gRPC-klientappar på .NET Framework bör konfigurera WinHttpHandler.
Mer information om de olika hanterarna och deras konfigurationsalternativ finns i:
Additional resources
ASP.NET Core