Dogodek
Power BI DataViz Svetovno prvenstvo
14. feb., 16h - 31. mar., 16h
S 4 možnosti za vstop, bi lahko zmagal konferenčni paket in da bi bilo v ŽIVO Grand Finale v Las Vegasu
Več informacijTa brskalnik ni več podprt.
Izvedite nadgradnjo na Microsoft Edge, če želite izkoristiti vse prednosti najnovejših funkcij, varnostnih posodobitev in tehnične podpore.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server. At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
In this tutorial, you:
Visual Studio 2022 with the ASP.NET and web development workload.
gRPC
. Select ASP.NET Core gRPC Service and select Next.GrpcGreeter
for Project name. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio:
http://localhost:port
, such as http://localhost:7042
.
localhost
: The standard hostname for the local computer. Localhost only serves web requests from the local computer.The logs show the service listening on https://localhost:<port>
, where <port>
is the localhost port number randomly assigned when the project is created and set in Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server. The gRPC service localhost port number is randomly assigned when the project is created and set in the Properties\launchSettings.json file of the gRPC service project.
GrpcGreeter project files:
Protos/greet.proto
: defines the Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Services
folder: Contains the implementation of the Greeter
service.appSettings.json
: Contains configuration data such as the protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
, which contains:
The gRPC client project requires the following NuGet packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code.
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
In the preceding highlighted code, replace the localhost port number 7042
with the HTTPS
port number specified in Properties/launchSettings.json
within the GrpcGreeter
service project.
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Update the appsettings.Development.json
file by adding the following highlighted lines:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
GrpcGreeter
service project, press Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
console project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished HTTP/2 POST https://localhost:7042/greet.Greeter/SayHello - 200 - application/grpc 40.4615ms
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server. At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
In this tutorial, you:
Visual Studio 2022 with the ASP.NET and web development workload.
gRPC
. Select ASP.NET Core gRPC Service and select Next.GrpcGreeter
for Project name. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio:
http://localhost:port
, such as http://localhost:7042
.
localhost
: The standard hostname for the local computer. Localhost only serves web requests from the local computer.The logs show the service listening on https://localhost:<port>
, where <port>
is the localhost port number randomly assigned when the project is created and set in Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server. The gRPC service localhost port number is randomly assigned when the project is created and set in the Properties\launchSettings.json file of the gRPC service project.
GrpcGreeter project files:
Protos/greet.proto
: defines the Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Services
folder: Contains the implementation of the Greeter
service.appSettings.json
: Contains configuration data such as the protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
, which contains:
The gRPC client project requires the following NuGet packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
In the preceding highlighted code, replace the localhost port number 7042
with the HTTPS
port number specified in Properties/launchSettings.json
within the GrpcGreeter
service project.
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Update the appsettings.Development.json
file by adding the following highlighted lines:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server. At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
In this tutorial, you:
Visual Studio 2022 with the ASP.NET and web development workload.
gRPC
. Select ASP.NET Core gRPC Service and select Next.GrpcGreeter
for Project name. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio:
http://localhost:port
, such as http://localhost:7042
.
localhost
: The standard hostname for the local computer. Localhost only serves web requests from the local computer.The logs show the service listening on https://localhost:<port>
, where <port>
is the localhost port number randomly assigned when the project is created and set in Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server. The gRPC service localhost port number is randomly assigned when the project is created and set in the Properties\launchSettings.json file of the gRPC service project.
macOS doesn't support ASP.NET Core gRPC with TLS. Additional configuration is required to successfully run gRPC services on macOS. For more information, see Unable to start ASP.NET Core gRPC app on macOS.
GrpcGreeter project files:
Protos/greet.proto
: defines the Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Services
folder: Contains the implementation of the Greeter
service.appSettings.json
: Contains configuration data such as the protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
, which contains:
The gRPC client project requires the following NuGet packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
In the preceding highlighted code, replace the localhost port number 7042
with the HTTPS
port number specified in Properties/launchSettings.json
within the GrpcGreeter
service project.
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Update the appsettings.Development.json
file by adding the following highlighted lines:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
,"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
}
}
}
Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server. At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
In this tutorial, you:
gRPC
. Select ASP.NET Core gRPC Service and select Next.GrpcGreeter
for Project name. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio:
http://localhost:port
, such as http://localhost:7042
.
localhost
: The standard hostname for the local computer. Localhost only serves web requests from the local computer.The logs show the service listening on https://localhost:<port>
, where <port>
is the localhost port number randomly assigned when the project is created and set in Properties/launchSettings.json
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server. The gRPC service localhost port number is randomly assigned when the project is created and set in the Properties\launchSettings.json file of the gRPC service project.
macOS doesn't support ASP.NET Core gRPC with TLS. Additional configuration is required to successfully run gRPC services on macOS. For more information, see Unable to start ASP.NET Core gRPC app on macOS.
GrpcGreeter project files:
Protos/greet.proto
: defines the Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Services
folder: Contains the implementation of the Greeter
service.appSettings.json
: Contains configuration data such as the protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
, which contains:
The gRPC client project requires the following NuGet packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code.
using System.Threading.Tasks;
using Grpc.Net.Client;
using GrpcGreeterClient;
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
In the preceding highlighted code, replace the localhost port number 7042
with the HTTPS
port number specified in Properties/launchSettings.json
within the GrpcGreeter
service project.
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Update the appsettings.Development.json
file by adding the following lines:
"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server.
At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
View or download sample code (how to download).
In this tutorial, you:
GrpcGreeter
for Project name. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio starts IIS Express and runs the app. The address bar shows localhost:port#
and not something like example.com
. That's because localhost
is the standard hostname for the local computer. Localhost only serves web requests from the local computer. When Visual Studio creates a web project, a random port is used for the web server.
The logs show the service listening on https://localhost:5001
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server.
macOS doesn't support ASP.NET Core gRPC with TLS. Additional configuration is required to successfully run gRPC services on macOS. For more information, see Unable to start ASP.NET Core gRPC app on macOS.
GrpcGreeter project files:
Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Greeter
service.appsettings.json
: Contains configuration data, such as protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
: Contains the entry point for the gRPC service. For more information, see .NET Generic Host in ASP.NET Core.Startup.cs
: Contains code that configures app behavior. For more information, see App startup.The gRPC client project requires the following packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
This tutorial shows how to create a .NET Core gRPC client and an ASP.NET Core gRPC Server.
At the end, you'll have a gRPC client that communicates with the gRPC Greeter service.
View or download sample code (how to download).
In this tutorial, you:
Start Visual Studio and select Create a new project. Alternatively, from the Visual Studio File menu, select New > Project.
In the Create a new project dialog, select gRPC Service and select Next:
Name the project GrpcGreeter. It's important to name the project GrpcGreeter so the namespaces match when you copy and paste code.
Select Create.
In the Create a new gRPC service dialog:
Press Ctrl+F5 to run without the debugger.
Visual Studio displays the following dialog when a project is not yet configured to use SSL:
Select Yes if you trust the IIS Express SSL certificate.
The following dialog is displayed:
Select Yes if you agree to trust the development certificate.
For information on trusting the Firefox browser, see Firefox SEC_ERROR_INADEQUATE_KEY_USAGE certificate error.
Visual Studio starts IIS Express and runs the app. The address bar shows localhost:port#
and not something like example.com
. That's because localhost
is the standard hostname for the local computer. Localhost only serves web requests from the local computer. When Visual Studio creates a web project, a random port is used for the web server.
The logs show the service listening on https://localhost:5001
.
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Opomba
The gRPC template is configured to use Transport Layer Security (TLS). gRPC clients need to use HTTPS to call the server.
macOS doesn't support ASP.NET Core gRPC with TLS. Additional configuration is required to successfully run gRPC services on macOS. For more information, see Unable to start ASP.NET Core gRPC app on macOS.
GrpcGreeter project files:
Greeter
gRPC and is used to generate the gRPC server assets. For more information, see Introduction to gRPC.Greeter
service.appsettings.json
: Contains configuration data, such as protocol used by Kestrel. For more information, see Configuration in ASP.NET Core.Program.cs
: Contains the entry point for the gRPC service. For more information, see .NET Generic Host in ASP.NET Core.Startup.cs
: Contains code that configures app behavior. For more information, see App startup.The gRPC client project requires the following packages:
PrivateAssets="All"
.Install the packages using either the Package Manager Console (PMC) or Manage NuGet Packages.
From Visual Studio, select Tools > NuGet Package Manager > Package Manager Console
From the Package Manager Console window, run cd GrpcGreeterClient
to change directories to the folder containing the GrpcGreeterClient.csproj
files.
Run the following commands:
Install-Package Grpc.Net.Client
Install-Package Google.Protobuf
Install-Package Grpc.Tools
Google.Protobuf
and Grpc.Tools
.Create a Protos folder in the gRPC client project.
Copy the Protos\greet.proto file from the gRPC Greeter service to the Protos folder in the gRPC client project.
Update the namespace inside the greet.proto
file to the project's namespace:
option csharp_namespace = "GrpcGreeterClient";
Edit the GrpcGreeterClient.csproj
project file:
Right-click the project and select Edit Project File.
Add an item group with a <Protobuf>
element that refers to the greet.proto file:
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
GrpcGreeterClient
namespace.Opomba
The GrpcGreeterClient
types are generated automatically by the build process. The tooling package Grpc.Tools generates the following files based on the greet.proto file:
GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs
: The protocol buffer code which populates, serializes and retrieves the request and response message types.GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs
: Contains the generated client classes.For more information on the C# assets automatically generated by Grpc.Tools, see gRPC services with C#: Generated C# assets.
Update the gRPC client Program.cs
file with the following code:
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;
namespace GrpcGreeterClient
{
class Program
{
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
Program.cs
contains the entry point and logic for the gRPC client.
The Greeter client is created by:
GrpcChannel
containing the information for creating the connection to the gRPC service.GrpcChannel
to construct the Greeter client:static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
The Greeter client calls the asynchronous SayHello
method. The result of the SayHello
call is displayed:
static async Task Main(string[] args)
{
// The port number(5001) must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
Ctrl+F5
to start the server without the debugger.GrpcGreeterClient
project, press Ctrl+F5
to start the client without the debugger.The client sends a greeting to the service with a message containing its name, GreeterClient. The service sends the message "Hello GreeterClient" as a response. The "Hello GreeterClient" response is displayed in the command prompt:
Greeting: Hello GreeterClient
Press any key to exit...
The gRPC service records the details of the successful call in the logs written to the command prompt:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 78.32260000000001ms 200 application/grpc
Opomba
The code in this article requires the ASP.NET Core HTTPS development certificate to secure the gRPC service. If the .NET gRPC client fails with the message The remote certificate is invalid according to the validation procedure.
or The SSL connection could not be established.
, the development certificate isn't trusted. To fix this issue, see Call a gRPC service with an untrusted/invalid certificate.
Povratne informacije o izdelku ASP.NET Core
ASP.NET Core je odprtokodni projekt. Izberite povezavo za pošiljanje povratnih informacij:
Dogodek
Power BI DataViz Svetovno prvenstvo
14. feb., 16h - 31. mar., 16h
S 4 možnosti za vstop, bi lahko zmagal konferenčni paket in da bi bilo v ŽIVO Grand Finale v Las Vegasu
Več informacijUsposabljanje
Vodeno učenje
Create cloud-native apps and services with .NET and ASP.NET Core - Training
Create independently deployable, highly scalable, and resilient apps and services using the free and open-source .NET platform. With .NET you can use popular microservice technology like Docker, Kubernetes, Dapr, Azure Container Registry, and more for .NET and ASP.NET Core applications and services.
Dokumentacija
Learn about gRPC services with Kestrel server and the ASP.NET Core stack.
Learn the basic concepts when writing gRPC services with C#.
Migrate gRPC from C-core to gRPC for .NET
Learn how to move an existing C-core based gRPC app to run on top of gRPC for .NET.