public RequestDelegate CreateUnimplementedService() { var logger = _loggerFactory.CreateLogger <ServerCallHandlerFactory <TService> >(); return(httpContext => { GrpcProtocolHelpers.AddProtocolHeaders(httpContext.Response); var unimplementedService = httpContext.Request.RouteValues["unimplementedService"]?.ToString(); Log.ServiceUnimplemented(logger, unimplementedService); GrpcProtocolHelpers.AppendStatusTrailers(httpContext.Response, new Status(StatusCode.Unimplemented, "Service is unimplemented.")); return Task.CompletedTask; }); }
public static void ConsolidateTrailers(this HttpResponse httpResponse, HttpContextServerCallContext context) { if (context.HasResponseTrailers) { foreach (var trailer in context.ResponseTrailers) { if (trailer.IsBinary) { httpResponse.AppendTrailer(trailer.Key, Convert.ToBase64String(trailer.ValueBytes)); } else { httpResponse.AppendTrailer(trailer.Key, trailer.Value); } } } // Append status trailers, these overwrite any existing status trailers set via ServerCallContext.ResponseTrailers GrpcProtocolHelpers.AppendStatusTrailers(httpResponse, context.Status); }