@@ -54,21 +54,27 @@ public static IEndpointConventionBuilder MapOpenApi(this IEndpointRouteBuilder e
5454 var document = await documentService . GetOpenApiDocumentAsync ( context . RequestServices , context . Request , context . RequestAborted ) ;
5555 var documentOptions = options . Get ( lowercasedDocumentName ) ;
5656
57- using var writer = new Utf8BufferTextWriter ( ) ;
58- writer . SetWriter ( context . Response . BodyWriter ) ;
57+ using var textWriter = new Utf8BufferTextWriter ( ) ;
58+ textWriter . SetWriter ( context . Response . BodyWriter ) ;
59+
60+ string contentType ;
61+ OpenApiWriterBase openApiWriter ;
5962
6063 if ( UseYaml ( pattern ) )
6164 {
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 ) ;
65+ contentType = "text/plain+yaml;charset=utf-8" ;
66+ openApiWriter = new OpenApiYamlWriter ( textWriter ) ;
6567 }
6668 else
6769 {
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 ) ;
70+ contentType = "application/json;charset=utf-8" ;
71+ openApiWriter = new OpenApiJsonWriter ( textWriter ) ;
7172 }
73+
74+ context . Response . ContentType = contentType ;
75+
76+ await context . Response . StartAsync ( ) ;
77+ await document . SerializeAsync ( openApiWriter , documentOptions . OpenApiVersion , context . RequestAborted ) ;
7278 await context . Response . BodyWriter . FlushAsync ( context . RequestAborted ) ;
7379 }
7480 } ) . ExcludeFromDescription ( ) ;
0 commit comments