services.AddGrpcWeb();
app.UseGrpcWeb();
syntax = "proto3";
option csharp_namespace = "GrpcServiceSample";
package Greeter;
service GreetService {
rpc SayHello (HelloRequest) returns (HelloResponse);
}
message HelloRequest {
string name = 1;
}
message HelloResponse {
string message = 1;
}
public class GreetService : Greeter.GreetService.GreetServiceBase
{
public override Task SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloResponse
{
Message = $"Hello, {request.Name}!"
});
}
}
@page "/"
@using GrpcServiceSample
@inject GrpcChannel _channel
@if (!string.IsNullOrEmpty(Message))
{
@Message
}
@code {
private string Message { get; set; }
private async Task SayHello()
{
var client = new Greeter.GreetService.GreetServiceClient(_channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "World" });
Message = reply.Message;
}
}
注意:在Blazor WebAssembly中使用GRPC需要启用GRPC-