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