@@ -42,7 +42,7 @@ private static ControllerAction CreateControllerAction(HttpMethod method, string
4242 Type = HttpMethodToOperationType ( method ) ,
4343 Path = route . StartsWith ( "/" ) ? route : "/" + route ,
4444 Names = CreateNames ( item . ControllerType ) ,
45- Responses = CreateResponses ( item . ControllerType ) ,
45+ Responses = CreateResponses ( item . ControllerType , context ) ,
4646 RequestBody = CreateRequestBody ( item . ControllerType , context ) ,
4747 IsAuthorizationRequired = item . Security != null && item . Security . IsAuthorizationRequired
4848 } ;
@@ -112,19 +112,19 @@ private static OpenApiRequestBody CreateRequestBody(Type controllerType, Documen
112112 return request ;
113113 }
114114
115- private static IDictionary < int , OpenApiResponse > CreateResponses ( Type controllerType )
115+ private static IDictionary < int , OpenApiResponse > CreateResponses ( Type controllerType , DocumentFilterContext context )
116116 {
117117 var items = new Dictionary < int , OpenApiResponse > ( ) ;
118118
119119 var attributes = controllerType . GetCustomAttributes ( typeof ( ProducesResponseAttribute ) , false ) ;
120120
121121 foreach ( ProducesResponseAttribute item in attributes )
122- items . Add ( item . StatusCode , CreateResponse ( item ) ) ;
122+ items . Add ( item . StatusCode , CreateResponse ( item , context ) ) ;
123123
124124 return items ;
125125 }
126126
127- private static OpenApiResponse CreateResponse ( ProducesResponseAttribute producesResponse )
127+ private static OpenApiResponse CreateResponse ( ProducesResponseAttribute producesResponse , DocumentFilterContext context )
128128 {
129129 var response = new OpenApiResponse ( ) ;
130130
@@ -133,7 +133,9 @@ private static OpenApiResponse CreateResponse(ProducesResponseAttribute produces
133133 . Value ;
134134
135135 foreach ( var item in producesResponse . ContentTypes . Distinct ( ) )
136- response . Content . Add ( item , new OpenApiMediaType ( ) ) ;
136+ response . Content . Add ( item , producesResponse . Type is null
137+ ? new OpenApiMediaType ( )
138+ : new ( ) { Schema = context . SchemaGenerator . GenerateSchema ( producesResponse . Type , context . SchemaRepository ) } ) ;
137139
138140 return response ;
139141 }
0 commit comments