@@ -128,9 +128,6 @@ public static IApiVersioningBuilder EnableApiVersionBinding( this IApiVersioning
128128 services . TryAddEnumerable ( Singleton < IProblemDetailsWriter , TWriter > ( ) ) ;
129129 services . Configure ( setup ?? DefaultErrorObjectJsonConfig ) ;
130130
131- // TODO: remove with TryAddErrorObjectJsonOptions in 9.0+
132- services . AddTransient < ErrorObjectsAdded > ( ) ;
133-
134131 return services ;
135132 }
136133
@@ -153,8 +150,6 @@ private static void AddApiVersioningServices( IServiceCollection services )
153150 services . TryAddEnumerable ( Singleton < IApiVersionMetadataCollationProvider , EndpointApiVersionMetadataCollationProvider > ( ) ) ;
154151 services . TryAddTransient < IEndpointInspector , DefaultEndpointInspector > ( ) ;
155152 services . Replace ( WithLinkGeneratorDecorator ( services ) ) ;
156- TryAddProblemDetailsRfc7231Compliance ( services ) ;
157- TryAddErrorObjectJsonOptions ( services ) ;
158153 }
159154
160155 // REF: https://github.com/dotnet/aspnetcore/blob/main/src/Http/Routing/src/DependencyInjection/RoutingServiceCollectionExtensions.cs#L96
@@ -233,75 +228,4 @@ LinkGenerator NewFactory( IServiceProvider serviceProvider )
233228 return Describe ( typeof ( LinkGenerator ) , factory , lifetime ) ;
234229 }
235230 }
236-
237- // TODO: Fixed and released; remove in .NET 10.0
238- // BUG: https://github.com/dotnet/aspnetcore/issues/52577
239- private static void TryAddProblemDetailsRfc7231Compliance ( IServiceCollection services )
240- {
241- var descriptor = services . FirstOrDefault ( IsDefaultProblemDetailsWriter ) ;
242-
243- if ( descriptor == null )
244- {
245- return ;
246- }
247-
248- var index = services . IndexOf ( descriptor ) ;
249- var decoratedType = descriptor . ImplementationType ! ;
250- var lifetime = descriptor . Lifetime ;
251-
252- services [ index ] = Describe ( typeof ( IProblemDetailsWriter ) , sp => NewProblemDetailsWriter ( sp , decoratedType ) , lifetime ) ;
253- services . Add ( Describe ( decoratedType , decoratedType , lifetime ) ) ;
254-
255- static bool IsDefaultProblemDetailsWriter ( ServiceDescriptor serviceDescriptor ) =>
256- serviceDescriptor . ServiceType == typeof ( IProblemDetailsWriter ) &&
257- serviceDescriptor . ImplementationType ? . FullName == "Microsoft.AspNetCore.Http.DefaultProblemDetailsWriter" ;
258-
259- static Rfc7231ProblemDetailsWriter NewProblemDetailsWriter ( IServiceProvider serviceProvider , Type decoratedType ) =>
260- new ( ( IProblemDetailsWriter ) serviceProvider . GetRequiredService ( decoratedType ) ) ;
261- }
262-
263- // TODO: retain for 8.1.x back-compat, but remove in 9.0+ in favor of AddErrorObjects for perf
264- private static void TryAddErrorObjectJsonOptions ( IServiceCollection services )
265- {
266- var serviceType = typeof ( IProblemDetailsWriter ) ;
267- var implementationType = typeof ( ErrorObjectWriter ) ;
268- var markerType = typeof ( ErrorObjectsAdded ) ;
269- var hasErrorObjects = false ;
270- var hasErrorObjectsJsonConfig = false ;
271-
272- for ( var i = 0 ; i < services . Count ; i ++ )
273- {
274- var service = services [ i ] ;
275-
276- if ( ! hasErrorObjects &&
277- service . ServiceType == serviceType &&
278- implementationType . IsAssignableFrom ( service . ImplementationType ) )
279- {
280- hasErrorObjects = true ;
281-
282- if ( hasErrorObjectsJsonConfig )
283- {
284- break ;
285- }
286- }
287- else if ( service . ServiceType == markerType )
288- {
289- hasErrorObjectsJsonConfig = true ;
290-
291- if ( hasErrorObjects )
292- {
293- break ;
294- }
295- }
296- }
297-
298- if ( hasErrorObjects && ! hasErrorObjectsJsonConfig )
299- {
300- services . Configure < JsonOptions > ( DefaultErrorObjectJsonConfig ) ;
301- }
302- }
303-
304- // TEMP: this is a marker class to test whether Error Objects have been explicitly added. remove in 9.0+
305- #pragma warning disable CA1812 // Avoid uninstantiated internal classes
306- private sealed class ErrorObjectsAdded { }
307231}
0 commit comments