gRPC on .NET supported platforms

By James Newton-King

This article discusses the requirements and supported platforms for using gRPC with .NET.

gRPC takes advantage of advanced features available in HTTP/2. HTTP/2 isn't supported everywhere, but a second wire-format using HTTP/1.1 is available for gRPC:

  • application/grpc - gRPC over HTTP/2 is how gRPC is typically used.
  • application/grpc-web - gRPC-Web modifies the gRPC protocol to be compatible with HTTP/1.1. gRPC-Web can be used in more places, notably it is callable by browser apps. Two advanced gRPC features are no longer supported: client streaming and bidirectional streaming.

gRPC on .NET supports both wire-formats. gRPC over HTTP/2 is used by default. For information on setting up gRPC-Web, see Use gRPC in browser apps.

Device requirements

gRPC on .NET supports any device that .NET Core supports.

  • Windows
  • Linux
  • macOS†
  • Browsers‡

macOS doesn't support hosting ASP.NET Core apps with HTTPS. gRPC clients on macOS can call remote services that use HTTPS.

‡Blazor WebAssembly apps can call gRPC services with gRPC-Web.

ASP.NET Core server requirements

gRPC services can be hosted on all built-in ASP.NET Core servers.

  • Kestrel
  • TestServer
  • IIS†
  • HTTP.sys‡

†IIS requires .NET 5 and Windows 10 Build 20241 or later.

‡HTTP.sys requires .NET 5 and Windows 10 Build 19529 or later.

For information about configuring ASP.NET Core servers to run gRPC, see gRPC services with ASP.NET Core.

.NET version requirements

gRPC on .NET supports .NET Core 3 and .NET 5 or later.

  • .NET 5 or later
  • .NET Core 3

gRPC on .NET doesn't support running on .NET Framework and Xamarin. gRPC C# core-library is a third party library that supports .NET Framework and Xamarin. gRPC C-core is not supported by Microsoft.

Azure services

†Azure App Service doesn't support hosting gRPC over HTTP/2. gRPC-Web is a compatible alternative.

Work is in-progress to improve support for gRPC with HTTP/2 in Azure App Service. For more information, see this GitHub issue.

Additional resources