Fix routing service registration

This commit is contained in:
Ryan Nowak 2015-12-18 10:08:12 -08:00
parent 813171a016
commit 1e6ff07ec8
3 changed files with 10 additions and 40 deletions

View File

@ -2,16 +2,20 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Routing; using Microsoft.AspNet.Routing;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
public static class RoutingServices /// <summary>
/// Contains extension methods to <see cref="IServiceCollection"/>.
/// </summary>
public static class RoutingServiceCollectionExtensions
{ {
public static IServiceCollection AddRouting(this IServiceCollection services) public static IServiceCollection AddRouting(this IServiceCollection services)
{ {
return AddRouting(services, null); return AddRouting(services, configureOptions: null);
} }
public static IServiceCollection AddRouting( public static IServiceCollection AddRouting(
@ -20,6 +24,7 @@ namespace Microsoft.Extensions.DependencyInjection
{ {
services.AddOptions(); services.AddOptions();
services.TryAddTransient<IInlineConstraintResolver, DefaultInlineConstraintResolver>(); services.TryAddTransient<IInlineConstraintResolver, DefaultInlineConstraintResolver>();
services.TryAddSingleton(UrlEncoder.Default);
if (configureOptions != null) if (configureOptions != null)
{ {
@ -29,4 +34,4 @@ namespace Microsoft.Extensions.DependencyInjection
return services; return services;
} }
} }
} }

View File

@ -1,34 +0,0 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Text.Encodings.Web;
using Microsoft.AspNet.Routing;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Microsoft.Extensions.DependencyInjection
{
/// <summary>
/// Contains extension methods to <see cref="IServiceCollection"/>.
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Configures a set of <see cref="RouteOptions"/> for the application.
/// </summary>
/// <param name="services">The services available in the application.</param>
/// <param name="setupAction">An action to configure the <see cref="RouteOptions"/>.</param>
public static void ConfigureRouting(
this IServiceCollection services,
Action<RouteOptions> setupAction)
{
if (setupAction == null)
{
throw new ArgumentNullException(nameof(setupAction));
}
services.TryAddSingleton(UrlEncoder.Default);
services.Configure(setupAction);
}
}
}

View File

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System; using System;
using System.Collections.Generic;
using Microsoft.AspNet.Http; using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.OptionsModel; using Microsoft.Extensions.OptionsModel;
@ -16,10 +15,10 @@ namespace Microsoft.AspNet.Routing.Tests
public void ConfigureRouting_ConfiguresOptionsProperly() public void ConfigureRouting_ConfiguresOptionsProperly()
{ {
// Arrange // Arrange
var services = new ServiceCollection().AddOptions(); var services = new ServiceCollection();
// Act // Act
services.ConfigureRouting(options => options.ConstraintMap.Add("foo", typeof(TestRouteConstraint))); services.AddRouting(options => options.ConstraintMap.Add("foo", typeof(TestRouteConstraint)));
var serviceProvider = services.BuildServiceProvider(); var serviceProvider = services.BuildServiceProvider();
// Assert // Assert