public RequestDelegate CreateUnimplementedMethod() { var logger = _loggerFactory.CreateLogger <ServerCallHandlerFactory <TService> >(); return(httpContext => { GrpcProtocolHelpers.AddProtocolHeaders(httpContext.Response); var unimplementedMethod = httpContext.Request.RouteValues["unimplementedMethod"]?.ToString(); Log.MethodUnimplemented(logger, unimplementedMethod); GrpcProtocolHelpers.SetStatusTrailers(httpContext.Response, new Status(StatusCode.Unimplemented, "Method 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.SetStatusTrailers(httpResponse, context.Status); }