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;
            });
        }
示例#2
0
        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);
        }