diff --git a/src/Microsoft.AspNet.Http.Abstractions/Extensions/UseExtensions.cs b/src/Microsoft.AspNet.Http.Abstractions/Extensions/UseExtensions.cs
index b5741c310e..1a14048128 100644
--- a/src/Microsoft.AspNet.Http.Abstractions/Extensions/UseExtensions.cs
+++ b/src/Microsoft.AspNet.Http.Abstractions/Extensions/UseExtensions.cs
@@ -26,125 +26,5 @@ namespace Microsoft.AspNet.Builder
};
});
}
-
- ///
- /// Use middleware defined in-line
- ///
- /// Per-request service required by middleware
- ///
- /// A function that handles the request or calls the given next function.
- ///
- public static IApplicationBuilder Use(this IApplicationBuilder app, Func, TService1, Task> middleware)
- {
- var applicationServices = app.ApplicationServices;
- return app.Use(next => context =>
- {
- var serviceProvider = context.RequestServices ?? context.ApplicationServices ?? applicationServices;
- if (serviceProvider == null)
- {
- throw new Exception("TODO: IServiceProvider is not available");
- }
- return middleware(
- context,
- () => next(context),
- GetRequiredService(serviceProvider));
- });
- }
-
- ///
- /// Use middleware defined in-line
- ///
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- ///
- /// A function that handles the request or calls the given next function.
- ///
- public static IApplicationBuilder Use(this IApplicationBuilder app, Func, TService1, TService2, Task> middleware)
- {
- var applicationServices = app.ApplicationServices;
- return app.Use(next => context =>
- {
- var serviceProvider = context.RequestServices ?? context.ApplicationServices ?? applicationServices;
- if (serviceProvider == null)
- {
- throw new Exception("TODO: IServiceProvider is not available");
- }
- return middleware(
- context,
- () => next(context),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider));
- });
- }
-
- ///
- /// Use middleware defined in-line
- ///
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- ///
- /// A function that handles the request or calls the given next function.
- ///
- public static IApplicationBuilder Use(this IApplicationBuilder app, Func, TService1, TService2, TService3, Task> middleware)
- {
- var applicationServices = app.ApplicationServices;
- return app.Use(next => context =>
- {
- var serviceProvider = context.RequestServices ?? context.ApplicationServices ?? applicationServices;
- if (serviceProvider == null)
- {
- throw new Exception("TODO: IServiceProvider is not available");
- }
- return middleware(
- context,
- () => next(context),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider));
- });
- }
-
- ///
- /// Use middleware defined in-line
- ///
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- /// Per-request service required by middleware
- ///
- /// A function that handles the request or calls the given next function.
- ///
- public static IApplicationBuilder Use(this IApplicationBuilder app, Func, TService1, TService2, TService3, TService4, Task> middleware)
- {
- var applicationServices = app.ApplicationServices;
- return app.Use(next => context =>
- {
- var serviceProvider = context.RequestServices ?? context.ApplicationServices ?? applicationServices;
- if (serviceProvider == null)
- {
- throw new Exception("TODO: IServiceProvider is not available");
- }
- return middleware(
- context,
- () => next(context),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider),
- GetRequiredService(serviceProvider));
- });
- }
-
- private static TService GetRequiredService(IServiceProvider serviceProvider)
- {
- var service = (TService)serviceProvider.GetService(typeof(TService));
-
- if (service == null)
- {
- throw new Exception(string.Format("TODO: No service for type '{0}' has been registered.", typeof(TService)));
- }
-
- return service;
- }
}
}
\ No newline at end of file
diff --git a/test/Microsoft.AspNet.Http.Extensions.Tests/UseWithServicesTests.cs b/test/Microsoft.AspNet.Http.Extensions.Tests/UseWithServicesTests.cs
deleted file mode 100644
index c6fd4207ca..0000000000
--- a/test/Microsoft.AspNet.Http.Extensions.Tests/UseWithServicesTests.cs
+++ /dev/null
@@ -1,138 +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.Collections.Generic;
-using System.Threading.Tasks;
-using Microsoft.AspNet.Builder;
-using Microsoft.Framework.DependencyInjection;
-using Xunit;
-
-namespace Microsoft.AspNet.Http.Extensions.Tests
-{
- public class UseWithServicesTests
- {
- [Fact]
- public async Task CallingUseThatAlsoTakesServices()
- {
- var builder = new ApplicationBuilder(new ServiceCollection()
- .AddScoped()
- .BuildServiceProvider());
-
- ITestService theService = null;
- builder.Use(async (ctx, next, testService) =>
- {
- theService = testService;
- await next();
- });
-
- var app = builder.Build();
- await app(new DefaultHttpContext());
-
- Assert.IsType(theService);
- }
-
- [Fact]
- public async Task ServicesArePerRequest()
- {
- var services = new ServiceCollection()
- .AddScoped()
- .BuildServiceProvider();
- var builder = new ApplicationBuilder(services);
-
- builder.Use(async (ctx, next) =>
- {
- var serviceScopeFactory = services.GetRequiredService();
- using (var serviceScope = serviceScopeFactory.CreateScope())
- {
- var priorApplicationServices = ctx.ApplicationServices;
- var priorRequestServices = ctx.ApplicationServices;
- ctx.ApplicationServices = services;
- ctx.RequestServices = serviceScope.ServiceProvider;
- try
- {
- await next();
- }
- finally
- {
- ctx.ApplicationServices = priorApplicationServices;
- ctx.RequestServices = priorRequestServices;
- }
- }
- });
-
- var testServicesA = new List();
- builder.Use(async (HttpContext ctx, Func next, ITestService testService) =>
- {
- testServicesA.Add(testService);
- await next();
- });
-
- var testServicesB = new List();
- builder.Use(async (ctx, next, testService) =>
- {
- testServicesB.Add(testService);
- await next();
- });
-
- var app = builder.Build();
- await app(new DefaultHttpContext());
- await app(new DefaultHttpContext());
-
- Assert.Equal(2, testServicesA.Count);
- Assert.IsType(testServicesA[0]);
- Assert.IsType(testServicesA[1]);
-
- Assert.Equal(2, testServicesB.Count);
- Assert.IsType(testServicesB[0]);
- Assert.IsType(testServicesB[1]);
-
- Assert.Same(testServicesA[0], testServicesB[0]);
- Assert.Same(testServicesA[1], testServicesB[1]);
-
- Assert.NotSame(testServicesA[0], testServicesA[1]);
- Assert.NotSame(testServicesB[0], testServicesB[1]);
- }
-
- [Fact]
- public async Task InvokeMethodWillAllowPerRequestServices()
- {
- var services = new ServiceCollection()
- .AddScoped()
- .BuildServiceProvider();
- var builder = new ApplicationBuilder(services);
- builder.UseMiddleware();
- var app = builder.Build();
-
- var ctx1 = new DefaultHttpContext();
- await app(ctx1);
-
- var testService = ctx1.Items[typeof(ITestService)];
- Assert.IsType(testService);
- }
- }
-
- public interface ITestService
- {
- }
-
- public class TestService : ITestService
- {
- }
-
- public class TestMiddleware
- {
- RequestDelegate _next;
-
- public TestMiddleware(RequestDelegate next)
- {
- _next = next;
- }
-
- public Task Invoke(HttpContext context, ITestService testService)
- {
- context.Items[typeof(ITestService)] = testService;
- return Task.FromResult(0);
- }
- }
-}
\ No newline at end of file