public static Metadata BuildMetadata(HttpResponseHeaders responseHeaders) { var headers = new Metadata(); foreach (var header in responseHeaders) { // ASP.NET Core includes pseudo headers in the set of request headers // whereas, they are not in gRPC implementations. We will filter them // out when we construct the list of headers on the context. if (header.Key.StartsWith(':')) { continue; } // Exclude grpc related headers if (header.Key.StartsWith("grpc-", StringComparison.OrdinalIgnoreCase)) { continue; } else if (header.Key.EndsWith(Metadata.BinaryHeaderSuffix, StringComparison.OrdinalIgnoreCase)) { headers.Add(header.Key, GrpcProtocolHelpers.ParseBinaryHeader(string.Join(",", header.Value))); } else { headers.Add(header.Key, string.Join(",", header.Value)); } } return(headers); }