diff --git a/src/Http/Http.Abstractions/src/Extensions/EndpointBuilder.cs b/src/Http/Http.Abstractions/src/Extensions/EndpointBuilder.cs
new file mode 100644
index 0000000000..2db104bb45
--- /dev/null
+++ b/src/Http/Http.Abstractions/src/Extensions/EndpointBuilder.cs
@@ -0,0 +1,35 @@
+// 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.Collections.Generic;
+using Microsoft.AspNetCore.Http;
+
+namespace Microsoft.AspNetCore.Builder
+{
+ ///
+ /// A base class for building an new .
+ ///
+ public abstract class EndpointBuilder
+ {
+ ///
+ /// Gets or sets the delegate used to process requests for the endpoint.
+ ///
+ public RequestDelegate RequestDelegate { get; set; }
+
+ ///
+ /// Gets or sets the informational display name of this endpoint.
+ ///
+ public string DisplayName { get; set; }
+
+ ///
+ /// Gets the collection of metadata associated with this endpoint.
+ ///
+ public IList Metadata { get; } = new List();
+
+ ///
+ /// Creates an instance of from the .
+ ///
+ /// The created .
+ public abstract Endpoint Build();
+ }
+}
diff --git a/src/Http/Http.Abstractions/src/Extensions/IEndpointConventionBuilder.cs b/src/Http/Http.Abstractions/src/Extensions/IEndpointConventionBuilder.cs
new file mode 100644
index 0000000000..f98a99dfd6
--- /dev/null
+++ b/src/Http/Http.Abstractions/src/Extensions/IEndpointConventionBuilder.cs
@@ -0,0 +1,22 @@
+// 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;
+
+namespace Microsoft.AspNetCore.Builder
+{
+ ///
+ /// Builds conventions that will be used for customization of instances.
+ ///
+ ///
+ /// This interface is used at application startup to customize endpoints for the application.
+ ///
+ public interface IEndpointConventionBuilder
+ {
+ ///
+ /// Adds the specified convention to the builder. Conventions are used to customize instances.
+ ///
+ /// The convention to add to the builder.
+ void Add(Action convention);
+ }
+}
diff --git a/src/Http/HttpAbstractions.sln b/src/Http/HttpAbstractions.sln
index f118d0ec2b..bbac5e1b46 100644
--- a/src/Http/HttpAbstractions.sln
+++ b/src/Http/HttpAbstractions.sln
@@ -109,6 +109,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{DC519C5E-CA6E-48CA-BF35-B46305B83013}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\src\Microsoft.AspNetCore.Server.IISIntegration\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{DF1EF1B6-9795-4957-979C-F62F58F91743}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.HttpOverrides", "..\Middleware\HttpOverrides\src\Microsoft.AspNetCore.HttpOverrides.csproj", "{611794D2-EF3A-422A-A077-23E61C7ADE49}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -575,6 +579,30 @@ Global
{1909E2E3-D435-47AA-B2AB-D6EC58BEDC0D}.Release|x64.Build.0 = Release|Any CPU
{1909E2E3-D435-47AA-B2AB-D6EC58BEDC0D}.Release|x86.ActiveCfg = Release|Any CPU
{1909E2E3-D435-47AA-B2AB-D6EC58BEDC0D}.Release|x86.Build.0 = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|x64.Build.0 = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Debug|x86.Build.0 = Debug|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|x64.ActiveCfg = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|x64.Build.0 = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|x86.ActiveCfg = Release|Any CPU
+ {DF1EF1B6-9795-4957-979C-F62F58F91743}.Release|x86.Build.0 = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|x64.Build.0 = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Debug|x86.Build.0 = Debug|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|Any CPU.Build.0 = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|x64.ActiveCfg = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|x64.Build.0 = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|x86.ActiveCfg = Release|Any CPU
+ {611794D2-EF3A-422A-A077-23E61C7ADE49}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -621,6 +649,8 @@ Global
{EEA036BB-E6B8-4D01-907B-D4B34B4368DB} = {793FFE24-138A-4C3D-81AB-18D625E36230}
{1909E2E3-D435-47AA-B2AB-D6EC58BEDC0D} = {793FFE24-138A-4C3D-81AB-18D625E36230}
{DC519C5E-CA6E-48CA-BF35-B46305B83013} = {14A7B3DE-46C8-4245-B0BD-9AFF3795C163}
+ {DF1EF1B6-9795-4957-979C-F62F58F91743} = {793FFE24-138A-4C3D-81AB-18D625E36230}
+ {611794D2-EF3A-422A-A077-23E61C7ADE49} = {793FFE24-138A-4C3D-81AB-18D625E36230}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {85B5E151-2E9D-419C-83DD-0DDCF446C83A}
diff --git a/src/Http/Routing/src/Builder/EndpointRouteBuilderExtensions.cs b/src/Http/Routing/src/Builder/EndpointRouteBuilderExtensions.cs
index 0babbfc0e6..2b655cc808 100644
--- a/src/Http/Routing/src/Builder/EndpointRouteBuilderExtensions.cs
+++ b/src/Http/Routing/src/Builder/EndpointRouteBuilderExtensions.cs
@@ -182,16 +182,16 @@ namespace Microsoft.AspNetCore.Builder
const int defaultOrder = 0;
- var routeEndpointModel = new RouteEndpointModel(
+ var routeEndpointBuilder = new RouteEndpointBuilder(
requestDelegate,
pattern,
defaultOrder);
- routeEndpointModel.DisplayName = displayName;
+ routeEndpointBuilder.DisplayName = displayName;
if (metadata != null)
{
foreach (var item in metadata)
{
- routeEndpointModel.Metadata.Add(item);
+ routeEndpointBuilder.Metadata.Add(item);
}
}
@@ -203,7 +203,7 @@ namespace Microsoft.AspNetCore.Builder
builder.DataSources.Add(modelEndpointDataSource);
}
- return modelEndpointDataSource.AddEndpointModel(routeEndpointModel);
+ return modelEndpointDataSource.AddEndpointBuilder(routeEndpointBuilder);
}
#endregion
}
diff --git a/src/Http/Routing/src/EndpointModel.cs b/src/Http/Routing/src/EndpointModel.cs
deleted file mode 100644
index 6d9e085645..0000000000
--- a/src/Http/Routing/src/EndpointModel.cs
+++ /dev/null
@@ -1,19 +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.Collections.Generic;
-using Microsoft.AspNetCore.Http;
-
-namespace Microsoft.AspNetCore.Routing
-{
- public abstract class EndpointModel
- {
- public RequestDelegate RequestDelegate { get; set; }
-
- public string DisplayName { get; set; }
-
- public IList Metadata { get; } = new List();
-
- public abstract Endpoint Build();
- }
-}
diff --git a/src/Http/Routing/src/IEndpointModelConvention.cs b/src/Http/Routing/src/IEndpointModelConvention.cs
deleted file mode 100644
index ee77b2cc63..0000000000
--- a/src/Http/Routing/src/IEndpointModelConvention.cs
+++ /dev/null
@@ -1,12 +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;
-
-namespace Microsoft.AspNetCore.Routing
-{
- public interface IEndpointConventionBuilder
- {
- void Apply(Action convention);
- }
-}
diff --git a/src/Http/Routing/src/ModelEndpointDataSource.cs b/src/Http/Routing/src/ModelEndpointDataSource.cs
index 5614310342..3585641b98 100644
--- a/src/Http/Routing/src/ModelEndpointDataSource.cs
+++ b/src/Http/Routing/src/ModelEndpointDataSource.cs
@@ -1,9 +1,10 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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.Linq;
+using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Primitives;
@@ -19,9 +20,9 @@ namespace Microsoft.AspNetCore.Routing
_endpointConventionBuilders = new List();
}
- public IEndpointConventionBuilder AddEndpointModel(EndpointModel endpointModel)
+ public IEndpointConventionBuilder AddEndpointBuilder(EndpointBuilder endpointBuilder)
{
- var builder = new EndpointConventionBuilder(endpointModel);
+ var builder = new EndpointConventionBuilder(endpointBuilder);
_endpointConventionBuilders.Add(builder);
return builder;
@@ -35,21 +36,21 @@ namespace Microsoft.AspNetCore.Routing
public override IReadOnlyList Endpoints => _endpointConventionBuilders.Select(e => e.Build()).ToArray();
// for testing
- internal IEnumerable EndpointModels => _endpointConventionBuilders.Select(b => b.EndpointModel);
+ internal IEnumerable EndpointBuilders => _endpointConventionBuilders.Select(b => b.EndpointBuilder);
private class EndpointConventionBuilder : IEndpointConventionBuilder
{
- internal EndpointModel EndpointModel { get; }
+ internal EndpointBuilder EndpointBuilder { get; }
- private readonly List> _conventions;
+ private readonly List> _conventions;
- public EndpointConventionBuilder(EndpointModel endpointModel)
+ public EndpointConventionBuilder(EndpointBuilder endpointBuilder)
{
- EndpointModel = endpointModel;
- _conventions = new List>();
+ EndpointBuilder = endpointBuilder;
+ _conventions = new List>();
}
- public void Apply(Action convention)
+ public void Add(Action convention)
{
_conventions.Add(convention);
}
@@ -58,11 +59,11 @@ namespace Microsoft.AspNetCore.Routing
{
foreach (var convention in _conventions)
{
- convention(EndpointModel);
+ convention(EndpointBuilder);
}
- return EndpointModel.Build();
+ return EndpointBuilder.Build();
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Http/Routing/src/RouteEndpointModel.cs b/src/Http/Routing/src/RouteEndpointModel.cs
index 8021c86b8f..f06ccba0bf 100644
--- a/src/Http/Routing/src/RouteEndpointModel.cs
+++ b/src/Http/Routing/src/RouteEndpointModel.cs
@@ -1,18 +1,19 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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 Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing.Patterns;
namespace Microsoft.AspNetCore.Routing
{
- public sealed class RouteEndpointModel : EndpointModel
+ public sealed class RouteEndpointBuilder : EndpointBuilder
{
public RoutePattern RoutePattern { get; set; }
public int Order { get; set; }
- public RouteEndpointModel(
+ public RouteEndpointBuilder(
RequestDelegate requestDelegate,
RoutePattern routePattern,
int order)
diff --git a/src/Http/Routing/test/UnitTests/Builder/MapEndpointEndpointDataSourceBuilderExtensionsTest.cs b/src/Http/Routing/test/UnitTests/Builder/MapEndpointEndpointDataSourceBuilderExtensionsTest.cs
index ad714df63c..1ac87b888c 100644
--- a/src/Http/Routing/test/UnitTests/Builder/MapEndpointEndpointDataSourceBuilderExtensionsTest.cs
+++ b/src/Http/Routing/test/UnitTests/Builder/MapEndpointEndpointDataSourceBuilderExtensionsTest.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
@@ -19,9 +19,9 @@ namespace Microsoft.AspNetCore.Builder
return Assert.IsType(Assert.Single(endpointRouteBuilder.DataSources));
}
- private RouteEndpointModel GetRouteEndpointBuilder(IEndpointRouteBuilder endpointRouteBuilder)
+ private RouteEndpointBuilder GetRouteEndpointBuilder(IEndpointRouteBuilder endpointRouteBuilder)
{
- return Assert.IsType(Assert.Single(GetBuilderEndpointDataSource(endpointRouteBuilder).EndpointModels));
+ return Assert.IsType(Assert.Single(GetBuilderEndpointDataSource(endpointRouteBuilder).EndpointBuilders));
}
[Fact]
diff --git a/src/Http/Routing/test/UnitTests/RouteEndpointModelTest.cs b/src/Http/Routing/test/UnitTests/RouteEndpointBuilderTest.cs
similarity index 83%
rename from src/Http/Routing/test/UnitTests/RouteEndpointModelTest.cs
rename to src/Http/Routing/test/UnitTests/RouteEndpointBuilderTest.cs
index cf75832ddd..41e31a9f34 100644
--- a/src/Http/Routing/test/UnitTests/RouteEndpointModelTest.cs
+++ b/src/Http/Routing/test/UnitTests/RouteEndpointBuilderTest.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
@@ -10,7 +10,7 @@ using Xunit;
namespace Microsoft.AspNetCore.Routing
{
- public class RouteEndpointModelTest
+ public class RouteEndpointBuilderTest
{
[Fact]
public void Build_AllValuesSet_EndpointCreated()
@@ -19,7 +19,7 @@ namespace Microsoft.AspNetCore.Routing
var metadata = new object();
RequestDelegate requestDelegate = (d) => null;
- var builder = new RouteEndpointModel(requestDelegate, RoutePatternFactory.Parse("/"), defaultOrder)
+ var builder = new RouteEndpointBuilder(requestDelegate, RoutePatternFactory.Parse("/"), defaultOrder)
{
DisplayName = "Display name!",
Metadata = { metadata }
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationAppBuilderExtensions.cs b/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationAppBuilderExtensions.cs
deleted file mode 100644
index 1566f8d127..0000000000
--- a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationAppBuilderExtensions.cs
+++ /dev/null
@@ -1,25 +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.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Builder;
-using RoutingSample.Web.AuthorizationMiddleware;
-
-namespace Microsoft.AspNetCore.Builder
-{
- public static class AuthorizationAppBuilderExtensions
- {
- public static IApplicationBuilder UseAuthorization(this IApplicationBuilder app)
- {
- if (app == null)
- {
- throw new ArgumentNullException(nameof(app));
- }
-
- return app.UseMiddleware();
- }
- }
-}
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMetadata.cs b/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMetadata.cs
deleted file mode 100644
index 0e492ddc24..0000000000
--- a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMetadata.cs
+++ /dev/null
@@ -1,25 +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.Linq;
-using System.Threading.Tasks;
-
-namespace RoutingSample.Web.AuthorizationMiddleware
-{
- public class AuthorizationMetadata
- {
- public AuthorizationMetadata(IEnumerable roles)
- {
- if (roles == null)
- {
- throw new ArgumentNullException(nameof(roles));
- }
-
- Roles = roles.ToArray();
- }
-
- public IReadOnlyList Roles { get; }
- }
-}
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMiddleware.cs b/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMiddleware.cs
deleted file mode 100644
index 594b18c43b..0000000000
--- a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/AuthorizationMiddleware.cs
+++ /dev/null
@@ -1,59 +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.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Http.Features;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Primitives;
-
-namespace RoutingSample.Web.AuthorizationMiddleware
-{
- public class AuthorizationMiddleware
- {
- private readonly ILogger _logger;
- private readonly RequestDelegate _next;
-
- public AuthorizationMiddleware(ILogger logger, RequestDelegate next)
- {
- if (logger == null)
- {
- throw new ArgumentNullException(nameof(logger));
- }
-
- if (next == null)
- {
- throw new ArgumentNullException(nameof(next));
- }
-
- _logger = logger;
- _next = next;
- }
-
- public async Task Invoke(HttpContext httpContext)
- {
- var endpoint = httpContext.Features.Get()?.Endpoint;
- if (endpoint != null)
- {
- var metadata = endpoint.Metadata.GetMetadata();
- // Only run authorization if endpoint has metadata
- if (metadata != null)
- {
- if (!httpContext.Request.Query.TryGetValue("x-role", out var role) ||
- !metadata.Roles.Contains(role.ToString()))
- {
- httpContext.Response.StatusCode = 401;
- httpContext.Response.ContentType = "text/plain";
- await httpContext.Response.WriteAsync($"Unauthorized access to '{endpoint.DisplayName}'.");
- return;
- }
- }
- }
-
- await _next(httpContext);
- }
- }
-}
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/EndpointConventionBuilderExtensions .cs b/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/EndpointConventionBuilderExtensions .cs
deleted file mode 100644
index 51a5c9c469..0000000000
--- a/src/Http/Routing/test/testassets/RoutingSandbox/AuthorizationMiddleware/EndpointConventionBuilderExtensions .cs
+++ /dev/null
@@ -1,17 +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 Microsoft.AspNetCore.Routing;
-using RoutingSample.Web.AuthorizationMiddleware;
-
-namespace Microsoft.AspNetCore.Builder
-{
- public static class EndpointConventionBuilderExtensions
- {
- public static IEndpointConventionBuilder RequireAuthorization(this IEndpointConventionBuilder builder, params string[] roles)
- {
- builder.Apply(endpointBuilder => endpointBuilder.Metadata.Add(new AuthorizationMetadata(roles)));
- return builder;
- }
- }
-}
\ No newline at end of file
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointDataSource.cs b/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointDataSource.cs
index 02b4d55c67..9a064d4a31 100644
--- a/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointDataSource.cs
+++ b/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointDataSource.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Routing.Patterns;
@@ -16,7 +17,7 @@ namespace RoutingSandbox.Framework
internal class FrameworkEndpointDataSource : EndpointDataSource, IEndpointConventionBuilder
{
private readonly RoutePatternTransformer _routePatternTransformer;
- private readonly List> _conventions;
+ private readonly List> _conventions;
public List Patterns { get; }
public List HubMethods { get; }
@@ -26,7 +27,7 @@ namespace RoutingSandbox.Framework
public FrameworkEndpointDataSource(RoutePatternTransformer routePatternTransformer)
{
_routePatternTransformer = routePatternTransformer;
- _conventions = new List>();
+ _conventions = new List>();
Patterns = new List();
HubMethods = new List();
@@ -62,18 +63,18 @@ namespace RoutingSandbox.Framework
continue;
}
- var endpointModel = new RouteEndpointModel(
+ var endpointBuilder = new RouteEndpointBuilder(
hubMethod.RequestDelegate,
resolvedPattern,
order++);
- endpointModel.DisplayName = $"{hubMethod.Hub}.{hubMethod.Method}";
+ endpointBuilder.DisplayName = $"{hubMethod.Hub}.{hubMethod.Method}";
foreach (var convention in _conventions)
{
- convention(endpointModel);
+ convention(endpointBuilder);
}
- endpoints.Add(endpointModel.Build());
+ endpoints.Add(endpointBuilder.Build());
}
}
@@ -85,7 +86,7 @@ namespace RoutingSandbox.Framework
return NullChangeToken.Singleton;
}
- public void Apply(Action convention)
+ public void Add(Action convention)
{
_conventions.Add(convention);
}
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointRouteBuilderExtensions.cs b/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointRouteBuilderExtensions.cs
index 6371160ef8..68233db388 100644
--- a/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointRouteBuilderExtensions.cs
+++ b/src/Http/Routing/test/testassets/RoutingSandbox/Framework/FrameworkEndpointRouteBuilderExtensions.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Routing.Patterns;
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/HelloExtension/EndpointRouteBuilderExtensions.cs b/src/Http/Routing/test/testassets/RoutingSandbox/HelloExtension/EndpointRouteBuilderExtensions.cs
index fc26b50bf8..c6c74075bd 100644
--- a/src/Http/Routing/test/testassets/RoutingSandbox/HelloExtension/EndpointRouteBuilderExtensions.cs
+++ b/src/Http/Routing/test/testassets/RoutingSandbox/HelloExtension/EndpointRouteBuilderExtensions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
diff --git a/src/Http/Routing/test/testassets/RoutingSandbox/UseEndpointRoutingStartup.cs b/src/Http/Routing/test/testassets/RoutingSandbox/UseEndpointRoutingStartup.cs
index 0f78d2f9e8..a82dcd5052 100644
--- a/src/Http/Routing/test/testassets/RoutingSandbox/UseEndpointRoutingStartup.cs
+++ b/src/Http/Routing/test/testassets/RoutingSandbox/UseEndpointRoutingStartup.cs
@@ -35,9 +35,6 @@ namespace RoutingSandbox
{
builder.MapHello("/helloworld", "World");
- builder.MapHello("/helloworld-secret", "Secret World")
- .RequireAuthorization("swordfish");
-
builder.MapGet(
"/",
(httpContext) =>
@@ -94,10 +91,6 @@ namespace RoutingSandbox
});
app.UseStaticFiles();
-
- app.UseAuthorization();
-
- app.UseEndpoint();
}
}
}
diff --git a/src/Http/Routing/test/testassets/RoutingWebSite/HelloExtension/EndpointRouteBuilderExtensions.cs b/src/Http/Routing/test/testassets/RoutingWebSite/HelloExtension/EndpointRouteBuilderExtensions.cs
index fc26b50bf8..c6c74075bd 100644
--- a/src/Http/Routing/test/testassets/RoutingWebSite/HelloExtension/EndpointRouteBuilderExtensions.cs
+++ b/src/Http/Routing/test/testassets/RoutingWebSite/HelloExtension/EndpointRouteBuilderExtensions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
diff --git a/src/Middleware/CORS/src/Infrastructure/CorsEndpointConventionBuilderExtensions.cs b/src/Middleware/CORS/src/Infrastructure/CorsEndpointConventionBuilderExtensions.cs
index d56807d4ee..84c4021956 100644
--- a/src/Middleware/CORS/src/Infrastructure/CorsEndpointConventionBuilderExtensions.cs
+++ b/src/Middleware/CORS/src/Infrastructure/CorsEndpointConventionBuilderExtensions.cs
@@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Builder
throw new ArgumentNullException(nameof(builder));
}
- builder.Apply(endpointBuilder =>
+ builder.Add(endpointBuilder =>
{
endpointBuilder.Metadata.Add(new EnableCorsAttribute(policyName));
});
@@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Builder
configurePolicy(policyBuilder);
var policy = policyBuilder.Build();
- builder.Apply(endpointBuilder =>
+ builder.Add(endpointBuilder =>
{
endpointBuilder.Metadata.Add(new CorsPolicyMetadata(policy));
});
diff --git a/src/Middleware/CORS/test/UnitTests/CorsEndpointConventionBuilderExtensionsTests.cs b/src/Middleware/CORS/test/UnitTests/CorsEndpointConventionBuilderExtensionsTests.cs
index e6692bf210..490a1d3644 100644
--- a/src/Middleware/CORS/test/UnitTests/CorsEndpointConventionBuilderExtensionsTests.cs
+++ b/src/Middleware/CORS/test/UnitTests/CorsEndpointConventionBuilderExtensionsTests.cs
@@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
// Assert
var addCorsPolicy = Assert.Single(testConventionBuilder.Conventions);
- var endpointModel = new TestEndpointModel();
+ var endpointModel = new TestEndpointBuilder();
addCorsPolicy(endpointModel);
var endpoint = endpointModel.Build();
@@ -45,9 +45,9 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
// Assert
var addCorsPolicy = Assert.Single(testConventionBuilder.Conventions);
- var endpointModel = new TestEndpointModel();
- addCorsPolicy(endpointModel);
- var endpoint = endpointModel.Build();
+ var endpointBuilder = new TestEndpointBuilder();
+ addCorsPolicy(endpointBuilder);
+ var endpoint = endpointBuilder.Build();
var metadata = endpoint.Metadata.GetMetadata();
Assert.NotNull(metadata);
@@ -55,7 +55,7 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
Assert.True(metadata.Policy.AllowAnyOrigin);
}
- private class TestEndpointModel : EndpointModel
+ private class TestEndpointBuilder : EndpointBuilder
{
public override Endpoint Build()
{
@@ -65,9 +65,9 @@ namespace Microsoft.AspNetCore.Cors.Infrastructure
private class TestEndpointConventionBuilder : IEndpointConventionBuilder
{
- public IList> Conventions { get; } = new List>();
+ public IList> Conventions { get; } = new List>();
- public void Apply(Action convention)
+ public void Add(Action convention)
{
Conventions.Add(convention);
}
diff --git a/src/Middleware/Middleware.sln b/src/Middleware/Middleware.sln
index 72b5f0ad70..a9d0db422d 100644
--- a/src/Middleware/Middleware.sln
+++ b/src/Middleware/Middleware.sln
@@ -251,6 +251,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleDestination", "CORS\s
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleOrigin", "CORS\samples\SampleOrigin\SampleOrigin.csproj", "{198FFE3B-0346-4856-A6C9-8752D51C4EB3}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Server.IISIntegration", "..\Servers\IIS\src\Microsoft.AspNetCore.Server.IISIntegration\Microsoft.AspNetCore.Server.IISIntegration.csproj", "{F6206539-038C-410A-86F7-3919D49A28C7}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -1377,6 +1379,18 @@ Global
{198FFE3B-0346-4856-A6C9-8752D51C4EB3}.Release|x64.Build.0 = Release|Any CPU
{198FFE3B-0346-4856-A6C9-8752D51C4EB3}.Release|x86.ActiveCfg = Release|Any CPU
{198FFE3B-0346-4856-A6C9-8752D51C4EB3}.Release|x86.Build.0 = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|x64.Build.0 = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Debug|x86.Build.0 = Debug|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|x64.ActiveCfg = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|x64.Build.0 = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|x86.ActiveCfg = Release|Any CPU
+ {F6206539-038C-410A-86F7-3919D49A28C7}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -1486,6 +1500,7 @@ Global
{E025D98E-BD85-474A-98A9-E7F44F392F8E} = {4967DE1B-FEC2-4C2B-8F7F-6262D67C9434}
{52CDD110-77DD-4C4D-8C72-4570F6EF20DD} = {7CF63806-4C4F-4C48-8922-A75113975308}
{198FFE3B-0346-4856-A6C9-8752D51C4EB3} = {7CF63806-4C4F-4C48-8922-A75113975308}
+ {F6206539-038C-410A-86F7-3919D49A28C7} = {ACA6DDB9-7592-47CE-A740-D15BF307E9E0}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {83786312-A93B-4BB4-AB06-7C6913A59AFA}
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Builder/DefaultEndpointConventionBuilder.cs b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Builder/DefaultEndpointConventionBuilder.cs
index 8427ba5c3b..6691d83d8f 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Builder/DefaultEndpointConventionBuilder.cs
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Builder/DefaultEndpointConventionBuilder.cs
@@ -11,12 +11,12 @@ namespace Microsoft.AspNetCore.Builder
{
public DefaultEndpointConventionBuilder()
{
- Conventions = new List>();
+ Conventions = new List>();
}
- public List> Conventions { get; }
+ public List> Conventions { get; }
- public void Apply(Action convention)
+ public void Add(Action convention)
{
Conventions.Add(convention);
}
diff --git a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Routing/MvcEndpointDataSource.cs b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Routing/MvcEndpointDataSource.cs
index 3f1ef4d360..40e55ae0a8 100644
--- a/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Routing/MvcEndpointDataSource.cs
+++ b/src/Mvc/src/Microsoft.AspNetCore.Mvc.Core/Routing/MvcEndpointDataSource.cs
@@ -269,7 +269,7 @@ namespace Microsoft.AspNetCore.Mvc.Routing
RouteValueDictionary dataTokens,
bool suppressLinkGeneration,
bool suppressPathMatching,
- List> conventions)
+ List> conventions)
{
RequestDelegate requestDelegate = (context) =>
{
@@ -281,17 +281,16 @@ namespace Microsoft.AspNetCore.Mvc.Routing
return invoker.InvokeAsync();
};
- var model = new RouteEndpointModel(requestDelegate, routePattern, order);
-
+ var endpointBuilder = new RouteEndpointBuilder(requestDelegate, routePattern, order);
AddEndpointMetadata(
- model.Metadata,
+ endpointBuilder.Metadata,
action,
routeName,
dataTokens,
suppressLinkGeneration,
suppressPathMatching);
- model.DisplayName = action.DisplayName;
+ endpointBuilder.DisplayName = action.DisplayName;
// REVIEW: When should conventions be run
// Metadata should have lower precedence that data source metadata
@@ -299,11 +298,11 @@ namespace Microsoft.AspNetCore.Mvc.Routing
{
foreach (var convention in conventions)
{
- convention(model);
+ convention(endpointBuilder);
}
}
- return (RouteEndpoint)model.Build();
+ return (RouteEndpoint)endpointBuilder.Build();
}
private static void AddEndpointMetadata(
diff --git a/src/Security/src/Microsoft.AspNetCore.Authorization.Policy/AuthorizationEndpointConventionBuilderExtensions.cs b/src/Security/src/Microsoft.AspNetCore.Authorization.Policy/AuthorizationEndpointConventionBuilderExtensions.cs
index 81b05d70ad..82331a3217 100644
--- a/src/Security/src/Microsoft.AspNetCore.Authorization.Policy/AuthorizationEndpointConventionBuilderExtensions.cs
+++ b/src/Security/src/Microsoft.AspNetCore.Authorization.Policy/AuthorizationEndpointConventionBuilderExtensions.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
@@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Builder
throw new ArgumentNullException(nameof(authorizeData));
}
- builder.Apply(endpointBuilder =>
+ builder.Add(endpointBuilder =>
{
foreach (var data in authorizeData)
{
@@ -47,4 +47,4 @@ namespace Microsoft.AspNetCore.Builder
return builder.RequireAuthorization(policyNames.Select(n => new AuthorizeAttribute(n)).ToArray());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Security/test/Microsoft.AspNetCore.Authorization.Test/AuthorizationEndpointConventionBuilderExtensionsTests.cs b/src/Security/test/Microsoft.AspNetCore.Authorization.Test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
index a2ab8fa8b5..94d8a71d45 100644
--- a/src/Security/test/Microsoft.AspNetCore.Authorization.Test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
+++ b/src/Security/test/Microsoft.AspNetCore.Authorization.Test/AuthorizationEndpointConventionBuilderExtensionsTests.cs
@@ -1,4 +1,4 @@
-// Copyright (c) .NET Foundation. All rights reserved.
+// 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;
@@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
// Assert
var convention = Assert.Single(builder.Conventions);
- var endpointModel = new RouteEndpointModel((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
+ var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
convention(endpointModel);
Assert.Equal(metadata, Assert.Single(endpointModel.Metadata));
@@ -44,7 +44,7 @@ namespace Microsoft.AspNetCore.Authorization.Test
// Assert
var convention = Assert.Single(builder.Conventions);
- var endpointModel = new RouteEndpointModel((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
+ var endpointModel = new RouteEndpointBuilder((context) => Task.CompletedTask, RoutePatternFactory.Parse("/"), 0);
convention(endpointModel);
Assert.Equal("policy", Assert.IsAssignableFrom(Assert.Single(endpointModel.Metadata)).Policy);
@@ -52,9 +52,9 @@ namespace Microsoft.AspNetCore.Authorization.Test
private class TestEndpointConventionBuilder : IEndpointConventionBuilder
{
- public IList> Conventions { get; } = new List>();
+ public IList> Conventions { get; } = new List>();
- public void Apply(Action convention)
+ public void Add(Action convention)
{
Conventions.Add(convention);
}