@@ -127,7 +127,13 @@ IEnumerable<IODataRoutingConvention> ConfigureRoutingConventions( IEdmModel mode
127127 routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
128128 }
129129
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+
131137 NotifyRoutesMapped ( ) ;
132138
133139 return odataRoutes ;
@@ -278,7 +284,13 @@ IEnumerable<IODataRoutingConvention> NewRouteConventions( IServiceProvider servi
278284 routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
279285 }
280286
281- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , unversionedConstraints , inlineConstraintResolver ) ;
287+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch (
288+ routeName ,
289+ routePrefix ,
290+ unversionedConstraints ,
291+ inlineConstraintResolver ,
292+ builder . ConfigureDefaultServices ( _ => { } ) ) ;
293+
282294 NotifyRoutesMapped ( ) ;
283295
284296 return odataRoutes ;
@@ -340,13 +352,13 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
340352 var routeCollection = builder . ServiceProvider . GetRequiredService < IODataRouteCollectionProvider > ( ) ;
341353 var perRouteContainer = builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) ;
342354 var inlineConstraintResolver = builder . ServiceProvider . GetRequiredService < IInlineConstraintResolver > ( ) ;
343- var preConfigureAction = builder . ConfigureDefaultServices (
355+ var perConfigureAction = builder . ConfigureDefaultServices (
344356 container =>
345357 {
346358 container . AddService ( Singleton , typeof ( IEnumerable < IODataRoutingConvention > ) , NewRoutingConventions ) ;
347359 configureAction ? . Invoke ( container ) ;
348360 } ) ;
349- var rootContainer = perRouteContainer . CreateODataRootContainer ( routeName , preConfigureAction ) ;
361+ var rootContainer = perRouteContainer . CreateODataRootContainer ( routeName , perConfigureAction ) ;
350362 var router = rootContainer . GetService < IRouter > ( ) ?? builder . DefaultHandler ;
351363
352364 builder . ConfigurePathHandler ( rootContainer ) ;
@@ -357,7 +369,7 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
357369 builder . ConfigureBatchHandler ( rootContainer , route ) ;
358370 builder . Routes . Add ( route ) ;
359371 routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
360- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver ) ;
372+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver , perConfigureAction ) ;
361373 NotifyRoutesMapped ( ) ;
362374
363375 return route ;
@@ -484,7 +496,7 @@ IEnumerable<IODataRoutingConvention> NewRoutingConventions( IServiceProvider ser
484496 builder . ConfigureBatchHandler ( rootContainer , route ) ;
485497 builder . Routes . Add ( route ) ;
486498 routeCollection . Add ( new ODataRouteMapping ( route , apiVersion , rootContainer ) ) ;
487- builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver ) ;
499+ builder . AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch ( routeName , routePrefix , apiVersion , inlineConstraintResolver , configureAction ) ;
488500 NotifyRoutesMapped ( ) ;
489501
490502 return route ;
@@ -552,22 +564,25 @@ static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch(
552564 string routeName ,
553565 string routePrefix ,
554566 IEnumerable < IRouteConstraint > unversionedConstraints ,
555- IInlineConstraintResolver inlineConstraintResolver )
567+ IInlineConstraintResolver inlineConstraintResolver ,
568+ Action < IContainerBuilder > configureAction )
556569 {
557570 routeName += UnversionedRouteSuffix ;
558571
559572 var constraint = new UnversionedODataPathRouteConstraint ( unversionedConstraints ) ;
560573 var route = new ODataRoute ( builder . DefaultHandler , routeName , routePrefix , constraint , inlineConstraintResolver ) ;
561574
562575 builder . Routes . Add ( route ) ;
576+ builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) . CreateODataRootContainer ( routeName , configureAction ) ;
563577 }
564578
565579 static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch (
566580 this IRouteBuilder builder ,
567581 string routeName ,
568582 string routePrefix ,
569583 ApiVersion apiVersion ,
570- IInlineConstraintResolver inlineConstraintResolver )
584+ IInlineConstraintResolver inlineConstraintResolver ,
585+ Action < IContainerBuilder > configureAction )
571586 {
572587 routeName += UnversionedRouteSuffix ;
573588
@@ -576,6 +591,7 @@ static void AddRouteToRespondWithBadRequestWhenAtLeastOneRouteCouldMatch(
576591 var route = new ODataRoute ( builder . DefaultHandler , routeName , routePrefix , constraint , inlineConstraintResolver ) ;
577592
578593 builder . Routes . Add ( route ) ;
594+ builder . ServiceProvider . GetRequiredService < IPerRouteContainer > ( ) . CreateODataRootContainer ( routeName , configureAction ) ;
579595 }
580596
581597 static IRouteConstraint MakeVersionedODataRouteConstraint ( ApiVersion apiVersion , ref string versionedRouteName )
0 commit comments