@@ -127,7 +127,13 @@ IEnumerable<IODataRoutingConvention> ConfigureRoutingConventions( IEdmModel mode
127
127
routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
128
128
}
129
129
130
- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , unversionedConstraints , inlineConstraintResolver ) ;
130
+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch (
131
+ routeName ,
132
+ routePrefix ,
133
+ unversionedConstraints ,
134
+ inlineConstraintResolver ,
135
+ builder . ConfigureDefaultServices ( container => configureAction ? . Invoke ( container ) ) ) ;
136
+
131
137
NotifyRoutesMapped ( ) ;
132
138
133
139
return odataRoutes ;
@@ -278,7 +284,13 @@ IEnumerable<IODataRoutingConvention> NewRouteConventions( IServiceProvider servi
278
284
routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
279
285
}
280
286
281
- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , unversionedConstraints , inlineConstraintResolver ) ;
287
+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch (
288
+ routeName ,
289
+ routePrefix ,
290
+ unversionedConstraints ,
291
+ inlineConstraintResolver ,
292
+ builder . ConfigureDefaultServices ( _ => { } ) ) ;
293
+
282
294
NotifyRoutesMapped ( ) ;
283
295
284
296
return odataRoutes ;
@@ -340,13 +352,13 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
340
352
var routeCollection = builder . ServiceProvider . GetRequiredService < IODataRouteCollectionProvider > ( ) ;
341
353
var perRouteContainer = builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) ;
342
354
var inlineConstraintResolver = builder . ServiceProvider . GetRequiredService < IInlineConstraintResolver > ( ) ;
343
- var preConfigureAction = builder . ConfigureDefaultServices (
355
+ var perConfigureAction = builder . ConfigureDefaultServices (
344
356
container =>
345
357
{
346
358
container . AddService ( Singleton , typeof ( IEnumerable < IODataRoutingConvention > ) , NewRoutingConventions ) ;
347
359
configureAction ? . Invoke ( container ) ;
348
360
} ) ;
349
- var rootContainer = perRouteContainer . CreateODataRootContainer ( routeName , preConfigureAction ) ;
361
+ var rootContainer = perRouteContainer . CreateODataRootContainer ( routeName , perConfigureAction ) ;
350
362
var router = rootContainer . GetService < IRouter > ( ) ?? builder . DefaultHandler ;
351
363
352
364
builder . ConfigurePathHandler ( rootContainer ) ;
@@ -357,7 +369,7 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
357
369
builder . ConfigureBatchHandler ( rootContainer , route ) ;
358
370
builder . Routes . Add ( route ) ;
359
371
routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
360
- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver ) ;
372
+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver , perConfigureAction ) ;
361
373
NotifyRoutesMapped ( ) ;
362
374
363
375
return route ;
@@ -484,7 +496,7 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
484
496
builder . ConfigureBatchHandler ( rootContainer , route ) ;
485
497
builder . Routes . Add ( route ) ;
486
498
routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
487
- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver ) ;
499
+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver , configureAction ) ;
488
500
NotifyRoutesMapped ( ) ;
489
501
490
502
return route ;
@@ -552,22 +564,25 @@ static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch(
552
564
string routeName ,
553
565
string routePrefix ,
554
566
IEnumerable < IRouteConstraint > unversionedConstraints ,
555
- IInlineConstraintResolver inlineConstraintResolver )
567
+ IInlineConstraintResolver inlineConstraintResolver ,
568
+ Action < IContainerBuilder > configureAction )
556
569
{
557
570
routeName += UnversionedRouteSuffix ;
558
571
559
572
var constraint = new UnversionedODataPathRouteConstraint ( unversionedConstraints ) ;
560
573
var route = new ODataRoute ( builder . DefaultHandler , routeName , routePrefix , constraint , inlineConstraintResolver ) ;
561
574
562
575
builder . Routes . Add ( route ) ;
576
+ builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) . CreateODataRootContainer ( routeName , configureAction ) ;
563
577
}
564
578
565
579
static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch (
566
580
this IRouteBuilder builder ,
567
581
string routeName ,
568
582
string routePrefix ,
569
583
ApiVersion apiVersion ,
570
- IInlineConstraintResolver inlineConstraintResolver )
584
+ IInlineConstraintResolver inlineConstraintResolver ,
585
+ Action < IContainerBuilder > configureAction )
571
586
{
572
587
routeName += UnversionedRouteSuffix ;
573
588
@@ -576,6 +591,7 @@ static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch(
576
591
var route = new ODataRoute ( builder . DefaultHandler , routeName , routePrefix , constraint , inlineConstraintResolver ) ;
577
592
578
593
builder . Routes . Add ( route ) ;
594
+ builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) . CreateODataRootContainer ( routeName , configureAction ) ;
579
595
}
580
596
581
597
static IRouteConstraint MakeVersionedODataRouteConstraint ( ApiVersion apiVersion , ref string versionedRouteName )
0 commit comments