Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Note
Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikel voor de huidige release.
Warning
Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie het .NET- en .NET Core-ondersteuningsbeleid voor meer informatie. Zie de .NET 9-versie van dit artikel voor de huidige release.
Important
Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.
Zie de .NET 9-versie van dit artikel voor de huidige release.
Servicesopties configureren
gRPC-services worden geconfigureerd met AddGrpc in Startup.cs. Configuratieopties bevinden zich in het Grpc.AspNetCore.Server pakket.
In de volgende tabel worden opties beschreven voor het configureren van gRPC-services:
| Option | Default Value | Description |
|---|---|---|
MaxSendMessageSize |
null |
De maximale berichtgrootte in bytes die vanaf de server kunnen worden verzonden. Als u een bericht probeert te verzenden dat groter is dan de geconfigureerde maximale berichtgrootte, resulteert dit in een uitzondering. Wanneer dit is ingesteld null, is de berichtgrootte onbeperkt. |
MaxReceiveMessageSize |
4 MB | De maximale berichtgrootte in bytes die door de server kunnen worden ontvangen. Als de server een bericht ontvangt dat deze limiet overschrijdt, wordt er een uitzondering gegenereerd. Door deze waarde te verhogen, kan de server grotere berichten ontvangen, maar kan dit een negatieve invloed hebben op het geheugenverbruik. Wanneer dit is ingesteld null, is de berichtgrootte onbeperkt. |
EnableDetailedErrors |
false |
Als truegedetailleerde uitzonderingsberichten naar clients worden geretourneerd wanneer er een uitzondering wordt gegenereerd in een servicemethode. De standaardwaarde is false. Instelling EnableDetailedErrors om true gevoelige informatie te lekken. |
CompressionProviders |
gzip | Een verzameling compressieproviders die worden gebruikt voor het comprimeren en decomprimeren van berichten. Aangepaste compressieproviders kunnen worden gemaakt en toegevoegd aan de verzameling. De standaard geconfigureerde providers ondersteunen gzip-compressie . |
ResponseCompressionAlgorithm |
null |
Het compressie-algoritme dat wordt gebruikt voor het comprimeren van berichten die vanaf de server worden verzonden. Het algoritme moet overeenkomen met een compressieprovider in CompressionProviders. Om een antwoord te comprimeren, moet de client aangeven dat het algoritme het algoritme ondersteunt door het te verzenden in de header grpc-accept-encoding . |
ResponseCompressionLevel |
null |
Het comprimeerniveau dat wordt gebruikt voor het comprimeren van berichten die vanaf de server worden verzonden. |
Interceptors |
None | Een verzameling interceptors die worden uitgevoerd met elke gRPC-aanroep. Interceptors worden uitgevoerd in de volgorde waarin ze zijn geregistreerd. Globaal geconfigureerde interceptors worden uitgevoerd voordat interceptors worden geconfigureerd voor één service. Interceptors hebben standaard een levensduur per aanvraag. De interceptorconstructor wordt aangeroepen en parameters worden omgezet vanuit afhankelijkheidsinjectie (DI). Een snijpunttype kan ook worden geregistreerd bij DI om te overschrijven hoe het wordt gemaakt en de levensduur ervan. Interceptors bieden vergelijkbare functionaliteiten in vergelijking met ASP.NET Core middleware. Zie gRPC Interceptors versus Middleware voor meer informatie. |
IgnoreUnknownServices |
false |
Als trueaanroepen naar onbekende services en methoden geen UNIMPLEMENTED-status retourneren en de aanvraag doorgeeft aan de volgende geregistreerde middleware in ASP.NET Core. |
Opties kunnen worden geconfigureerd voor alle services door een optie te bieden die delegeren aan de AddGrpc aanroep 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
});
}
Opties voor één service overschrijven de algemene opties die worden AddGrpc geleverd en kunnen worden geconfigureerd met behulp van 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
});
}
Service-interceptors hebben standaard een levensduur per aanvraag. Als u het snijpunttype registreert bij DI, wordt overschreven hoe een interceptor wordt gemaakt en de levensduur ervan.
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc(options =>
{
options.Interceptors.Add<LoggingInterceptor>();
});
services.AddSingleton<LoggingInterceptor>();
}
ASP.NET Core-serveropties
Grpc.AspNetCore.Server wordt gehost door een ASP.NET Core-webserver. Er zijn een aantal opties voor ASP.NET Core-servers, waaronder KestrelIIS en HTTP.sys. Elke server biedt extra opties voor de wijze waarop HTTP-aanvragen worden verwerkt.
De server die wordt gebruikt door een ASP.NET Core-app is geconfigureerd in de opstartcode van de app. De standaardserver is Kestrel.
Zie voor meer informatie over de verschillende servers en hun configuratieopties:
- Kestrel webserver in ASP.NET Core
- HTTP.sys webserver-implementatie in ASP.NET Core
- Host ASP.NET Core op Windows met IIS
Clientopties configureren
gRPC-clientconfiguratie is ingesteld op GrpcChannelOptions. Configuratieopties bevinden zich in het Grpc.Net.Client pakket.
In de volgende tabel worden opties beschreven voor het configureren van gRPC-kanalen:
| Option | Default Value | Description |
|---|---|---|
HttpHandler |
New instance | De HttpMessageHandler gebruikte om gRPC-aanroepen te maken. Een client kan worden ingesteld om een aangepaste HttpClientHandler configuratie te configureren of extra handlers toe te voegen aan de HTTP-pijplijn voor gRPC-aanroepen. Als er geen HttpMessageHandler is opgegeven, wordt er een nieuwe HttpClientHandler instantie gemaakt voor het kanaal met automatische verwijdering. |
HttpClient |
null |
De HttpClient gebruikte om gRPC-aanroepen te maken. Deze instelling is een alternatief voor HttpHandler. |
DisposeHttpClient |
false |
Als dit is ingesteld op true en een HttpMessageHandler of HttpClient is opgegeven, wordt de HttpHandler of HttpClientrespectievelijke, wordt verwijderd wanneer de GrpcChannel verwijdering wordt uitgevoerd. |
LoggerFactory |
null |
De LoggerFactory client gebruikt voor het vastleggen van informatie over gRPC-aanroepen. Een LoggerFactory exemplaar kan worden opgelost op basis van afhankelijkheidsinjectie of gemaakt met behulp van LoggerFactory.Create. Zie Logboekregistratie en diagnostische gegevens in gRPC op .NET voor voorbeelden van het configureren van logboekregistratie. |
MaxSendMessageSize |
null |
De maximale berichtgrootte in bytes die kunnen worden verzonden vanaf de client. Als u een bericht probeert te verzenden dat groter is dan de geconfigureerde maximale berichtgrootte, resulteert dit in een uitzondering. Wanneer dit is ingesteld null, is de berichtgrootte onbeperkt. |
MaxReceiveMessageSize |
4 MB | De maximale berichtgrootte in bytes die door de client kunnen worden ontvangen. Als de client een bericht ontvangt dat deze limiet overschrijdt, wordt er een uitzondering gegenereerd. Door deze waarde te verhogen, kan de client grotere berichten ontvangen, maar kan dit een negatieve invloed hebben op het geheugenverbruik. Wanneer dit is ingesteld null, is de berichtgrootte onbeperkt. |
Credentials |
null |
Een ChannelCredentials exemplaar. Referenties worden gebruikt om verificatiemetagegevens toe te voegen aan gRPC-aanroepen. |
CompressionProviders |
gzip | Een verzameling compressieproviders die worden gebruikt voor het comprimeren en decomprimeren van berichten. Aangepaste compressieproviders kunnen worden gemaakt en toegevoegd aan de verzameling. De standaard geconfigureerde providers ondersteunen gzip-compressie . |
ThrowOperationCanceledOnCancellation |
false |
Als dit is ingesteld trueop, worden clients gegooid OperationCanceledException wanneer een oproep wordt geannuleerd of de deadline wordt overschreden. |
UnsafeUseInsecureChannelCallCredentials |
false |
Indien ingesteld op true, CallCredentials worden toegepast op gRPC-aanroepen die worden gedaan door een onveilig kanaal. Het verzenden van verificatieheaders via een onveilige verbinding heeft gevolgen voor de beveiliging en moet niet worden uitgevoerd in productieomgevingen. |
MaxRetryAttempts |
5 | Het maximum aantal nieuwe pogingen. Deze waarde beperkt alle waarden voor nieuwe pogingen en hedgingpogingen die zijn opgegeven in de serviceconfiguratie. Als u deze waarde alleen instelt, worden nieuwe pogingen niet ingeschakeld. Nieuwe pogingen worden ingeschakeld in de serviceconfiguratie, die kan worden uitgevoerd met behulp van ServiceConfig. Met een null waarde wordt de maximumlimiet voor nieuwe pogingen verwijderd. Zie Tijdelijke foutafhandeling met gRPC-nieuwe pogingen voor meer informatie over nieuwe pogingen. |
MaxRetryBufferSize |
16 MB | De maximale buffergrootte in bytes die kunnen worden gebruikt om verzonden berichten op te slaan bij het opnieuw proberen of hedgingen van aanroepen. Als de bufferlimiet wordt overschreden, worden er geen nieuwe pogingen meer gedaan en worden alle hedging-oproepen geannuleerd, maar één wordt geannuleerd. Deze limiet wordt toegepast op alle aanroepen die via het kanaal worden gedaan. Met een null waarde wordt de maximale limiet voor buffergrootte voor opnieuw proberen verwijderd. |
MaxRetryBufferPerCallSize |
1 MB | De maximale buffergrootte in bytes die kunnen worden gebruikt om verzonden berichten op te slaan bij het opnieuw proberen of hedgingen van aanroepen. Als de bufferlimiet wordt overschreden, worden er geen nieuwe pogingen meer gedaan en worden alle hedging-oproepen geannuleerd, maar één wordt geannuleerd. Deze limiet wordt toegepast op één aanroep. Met een null waarde wordt de maximale limiet voor buffergrootte voor opnieuw proberen per aanroep verwijderd. |
ServiceConfig |
null |
De serviceconfiguratie voor een gRPC-kanaal. Een serviceconfiguratie kan worden gebruikt voor het configureren van nieuwe pogingen van gRPC. |
De volgende code:
- Hiermee stelt u de maximale grootte van het verzenden en ontvangen van berichten op het kanaal in.
- Hiermee maakt u een client.
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);
}
Houd er rekening mee dat client interceptors niet zijn geconfigureerd met GrpcChannelOptions. In plaats daarvan worden client interceptors geconfigureerd met behulp van de Intercept extensiemethode met een kanaal. Deze extensiemethode bevindt zich in de Grpc.Core.Interceptors naamruimte.
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 handleropties
Grpc.Net.Client maakt gebruik van een HTTP-transport afgeleid van HttpMessageHandler om HTTP-aanvragen te maken. Elke handler biedt extra opties voor de manier waarop HTTP-aanvragen worden gedaan.
De handler is geconfigureerd op een kanaal en kan worden overschreven door de instelling in te stellen GrpcChannelOptions.HttpHandler. .NET Core 3 en .NET 5 of hoger worden standaard gebruikt SocketsHttpHandler . gRPC-client-apps op .NET Framework moeten WinHttpHandler configureren.
Zie voor meer informatie over de verschillende handlers en hun configuratieopties: