@@ -53,29 +53,23 @@ public static IEndpointConventionBuilder MapOpenApi(this IEndpointRouteBuilder e
5353 {
5454 var document = await documentService . GetOpenApiDocumentAsync ( context . RequestServices , context . Request , context . RequestAborted ) ;
5555 var documentOptions = options . Get ( lowercasedDocumentName ) ;
56- using var output = MemoryBufferWriter . Get ( ) ;
57- using var writer = Utf8BufferTextWriter . Get ( output ) ;
58- try
56+
57+ using var writer = new Utf8BufferTextWriter ( ) ;
58+ writer . SetWriter ( context . Response . BodyWriter ) ;
59+
60+ if ( UseYaml ( pattern ) )
5961 {
60- if ( UseYaml ( pattern ) )
61- {
62- await document . SerializeAsync ( new OpenApiYamlWriter ( writer ) , documentOptions . OpenApiVersion ) ;
63- context . Response . ContentType = "text/plain+yaml;charset=utf-8" ;
64- }
65- else
66- {
67- await document . SerializeAsync ( new OpenApiJsonWriter ( writer ) , documentOptions . OpenApiVersion ) ;
68- context . Response . ContentType = "application/json;charset=utf-8" ;
69- }
70- await context . Response . BodyWriter . WriteAsync ( output . ToArray ( ) , context . RequestAborted ) ;
71- await context . Response . BodyWriter . FlushAsync ( context . RequestAborted ) ;
62+ context . Response . ContentType = "text/plain+yaml;charset=utf-8" ;
63+ await context . Response . StartAsync ( ) ;
64+ await document . SerializeAsync ( new OpenApiYamlWriter ( writer ) , documentOptions . OpenApiVersion , context . RequestAborted ) ;
7265 }
73- finally
66+ else
7467 {
75- MemoryBufferWriter . Return ( output ) ;
76- Utf8BufferTextWriter . Return ( writer ) ;
68+ context . Response . ContentType = "application/json;charset=utf-8" ;
69+ await context . Response . StartAsync ( ) ;
70+ await document . SerializeAsync ( new OpenApiJsonWriter ( writer ) , documentOptions . OpenApiVersion , context . RequestAborted ) ;
7771 }
78-
72+ await context . Response . BodyWriter . FlushAsync ( context . RequestAborted ) ;
7973 }
8074 } ) . ExcludeFromDescription ( ) ;
8175 }
0 commit comments