본문 바로가기
프로그래밍/PC

.NET Core 에서 gRPC-Web 구현

by 사악신 2022. 5. 22.

https://docs.microsoft.com/ko-kr/aspnet/core/grpc/browser?view=aspnetcore-6.0

 

NuGET 을 사용하여 Grpc.AspNetCore.Web 패기지를 추가합니다.

서버의 Startup.cs 에서 UseRouting 과 UseEndpoints 사이에 UseGrpcWeb 을 호출합니다. 그 외 CORS 처리 및 gRPC 서비스 중 gRPC-Web 을 지원할 메소드들에 EnableGrpcWeb() 을 연계 및 호출합니다. 

 

public void ConfigureServices(IServiceCollection services)
{
    services.AddGrpc();

    services.AddCors(o => o.AddPolicy("AllowAll", builder =>
    {
        builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader()
               .WithExposedHeaders("Grpc-Status", "Grpc-Message", "Grpc-Encoding", "Grpc-Accept-Encoding");
    }));
}

public void Configure(IApplicationBuilder app)
{
    app.UseRouting();

    app.UseGrpcWeb();
    app.UseCors();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGrpcService<GreeterService>().EnableGrpcWeb()
                                                  .RequireCors("AllowAll");
    });
}

 

끝으로 appsettings.json 파일의 Kestrel 설정 중 Protocols 부분이 Http2 라면 Http1AndHttp2 으로 변경합니다.(gRPC-Web 의 경우, HTTP/1.1 을 사용합니다.)

 

반응형

댓글