@@ -285,19 +285,22 @@ public static IApplicationBuilder UseNpgsqlRest(this IApplicationBuilder builder
285285 )
286286 )
287287 {
288+ var bodyParameter = parameter . NpgsqlResMemberwiseClone ( ) ;
288289 if ( body is null )
289290 {
290- parameter . ParamType = ParamType . BodyParam ;
291- parameter . Value = DBNull . Value ;
291+ bodyParameter . ParamType = ParamType . BodyParam ;
292+ bodyParameter . Value = DBNull . Value ;
292293 hasNulls = true ;
293- paramsList . Add ( parameter ) ;
294+ paramsList . Add ( bodyParameter ) ;
294295 }
295296 else
296297 {
297298 StringValues bodyStringValues = body ;
298- if ( TryParseParameter ( parameter , ref bodyStringValues , endpoint . QueryStringNullHandling ) )
299+ if ( TryParseParameter ( bodyParameter , ref bodyStringValues , endpoint . QueryStringNullHandling ) )
299300 {
300- paramsList . Add ( parameter ) ;
301+ bodyParameter . ParamType = ParamType . BodyParam ;
302+ hasNulls = false ;
303+ paramsList . Add ( bodyParameter ) ;
301304 }
302305 }
303306 continue ;
@@ -319,9 +322,10 @@ parameter.TypeDescriptor.HasDefault is true &&
319322 {
320323 SearializeHeader ( ) ;
321324 }
322- parameter . ParamType = ParamType . HeaderParam ;
323- parameter . Value = headers ;
324- paramsList . Add ( parameter ) ;
325+ var headerParameter = parameter . NpgsqlResMemberwiseClone ( ) ;
326+ headerParameter . ParamType = ParamType . HeaderParam ;
327+ headerParameter . Value = headers ;
328+ paramsList . Add ( headerParameter ) ;
325329 continue ;
326330 }
327331 }
@@ -335,19 +339,23 @@ parameter.TypeDescriptor.HasDefault is true &&
335339 }
336340 continue ;
337341 }
338- if ( TryParseParameter ( parameter , ref qsValue , endpoint . QueryStringNullHandling ) is false )
342+
343+ var queryParemeter = parameter . NpgsqlResMemberwiseClone ( ) ;
344+ if ( TryParseParameter ( queryParemeter , ref qsValue , endpoint . QueryStringNullHandling ) is false )
339345 {
340- if ( parameter . TypeDescriptor . HasDefault is false )
346+ if ( queryParemeter . TypeDescriptor . HasDefault is false )
341347 {
342348 await next ( context ) ;
343349 return ;
344350 }
345351 continue ;
346352 }
347- parameter . ParamType = ParamType . QueryString ;
348- parameter . QueryStringValues = qsValue ;
349- paramsList . Add ( parameter ) ;
350- if ( hasNulls is false && parameter . Value == DBNull . Value )
353+
354+ queryParemeter . ParamType = ParamType . QueryString ;
355+ queryParemeter . QueryStringValues = qsValue ;
356+ paramsList . Add ( queryParemeter ) ;
357+
358+ if ( hasNulls is false && queryParemeter . Value == DBNull . Value )
351359 {
352360 hasNulls = true ;
353361 }
@@ -401,9 +409,10 @@ parameter.TypeDescriptor.HasDefault is true &&
401409 {
402410 SearializeHeader ( ) ;
403411 }
404- parameter . ParamType = ParamType . HeaderParam ;
405- parameter . Value = headers ;
406- paramsList . Add ( parameter ) ;
412+ var headerParameter = parameter . NpgsqlResMemberwiseClone ( ) ;
413+ headerParameter . ParamType = ParamType . HeaderParam ;
414+ headerParameter . Value = headers ;
415+ paramsList . Add ( headerParameter ) ;
407416 continue ;
408417 }
409418 }
@@ -417,19 +426,20 @@ parameter.TypeDescriptor.HasDefault is true &&
417426 }
418427 continue ;
419428 }
420- if ( TryParseParameter ( parameter , ref value ) is false )
429+ var bodyParameter = parameter . NpgsqlResMemberwiseClone ( ) ;
430+ if ( TryParseParameter ( bodyParameter , ref value ) is false )
421431 {
422- if ( parameter . TypeDescriptor . HasDefault is false )
432+ if ( bodyParameter . TypeDescriptor . HasDefault is false )
423433 {
424434 await next ( context ) ;
425435 return ;
426436 }
427437 continue ;
428438 }
429- parameter . ParamType = ParamType . BodyJson ;
430- parameter . JsonBodyNode = value ;
431- paramsList . Add ( parameter ) ;
432- if ( hasNulls is false && parameter . Value == DBNull . Value )
439+ bodyParameter . ParamType = ParamType . BodyJson ;
440+ bodyParameter . JsonBodyNode = value ;
441+ paramsList . Add ( bodyParameter ) ;
442+ if ( hasNulls is false && bodyParameter . Value == DBNull . Value )
433443 {
434444 hasNulls = true ;
435445 }
0 commit comments