728x90
728x170

이전 포스팅에서 Stream 오류가 있어 해결을 하였습니다.

2023.01.13 - [C#] - [C#/gRPC] 대용량 데이터 Stream 전달시 에러 - HTTP/2 INTERNAL_ERROR

[C#/gRPC] 대용량 데이터 Stream 전달시 에러 - HTTP/2 INTERNAL_ERROR

대용량 데이터 전송시 Stream 에서 연결을 끊어버리는 오류가 발생되었습니다. status(statuscode="internal",detail="Error reading next message, IOException: The request was aborted. Http2StreamException:The HTTP/2 server reset the s

kjun.kr


그런데 이부분을 처리하려다 보니 추가하는 stream api 마다 옵션을 넣어주는 게 불편했습니다.
그래서 찾아보니 Interceptor 에서 이 부분을 수정해 주면 전체 stream api에 적용할 수 있습니다.
아래처럼 StreamingServerHandler에서 context(ServerCallContext)의 WriteOptions을 설정하면 됩니다.

    public class ApiInterceptor : Interceptor
    {
        public override Task ServerStreamingServerHandler<TRequest, TResponse>(TRequest request, IServerStreamWriter<TResponse> responseStream, ServerCallContext context, ServerStreamingServerMethod<TRequest, TResponse> continuation)
        {
            context.WriteOptions = new WriteOptions(WriteFlags.BufferHint);
            return base.ServerStreamingServerHandler(request, responseStream, context, continuation);
        }
    }

728x90
그리드형
Posted by kjun
,