1- // Copyright (c) .NET Foundation. All rights reserved.
1+ // Copyright (c) .NET Foundation. All rights reserved.
22// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33
4- using System ;
54using System . Net ;
6- using System . Text ;
75using System . Threading . Tasks ;
86using Microsoft . AspNetCore . Builder ;
97using Microsoft . AspNetCore . Hosting ;
@@ -16,72 +14,64 @@ namespace SampleDestination
1614 public class Startup
1715 {
1816 private static readonly string DefaultAllowedOrigin = $ "http://{ Dns . GetHostName ( ) } :9001";
19- private readonly ILogger < Startup > _logger ;
17+ private readonly ILogger < StartupWithoutEndpointRouting > _logger ;
2018
2119 public Startup ( ILoggerFactory loggerFactory )
2220 {
23- _logger = loggerFactory . CreateLogger < Startup > ( ) ;
21+ _logger = loggerFactory . CreateLogger < StartupWithoutEndpointRouting > ( ) ;
2422 _logger . LogInformation ( $ "Setting up CORS middleware to allow clients on { DefaultAllowedOrigin } ") ;
2523 }
2624
2725 public void ConfigureServices ( IServiceCollection services )
2826 {
29- services . AddCors ( ) ;
30- }
31-
32- public void Configure ( IApplicationBuilder app , IHostingEnvironment env )
33- {
34- app . Map ( "/allow-origin" , innerBuilder =>
27+ services . AddCors ( options =>
3528 {
36- innerBuilder . UseCors ( policy => policy
29+ options . AddPolicy ( "AllowOrigin" , policy => policy
3730 . WithOrigins ( DefaultAllowedOrigin )
3831 . AllowAnyMethod ( )
3932 . AllowAnyHeader ( ) ) ;
4033
41- innerBuilder . UseMiddleware < SampleMiddleware > ( ) ;
42- } ) ;
43-
44- app . Map ( "/allow-header-method" , innerBuilder =>
45- {
46- innerBuilder . UseCors ( policy => policy
34+ options . AddPolicy ( "AllowHeaderMethod" , policy => policy
4735 . WithOrigins ( DefaultAllowedOrigin )
4836 . WithHeaders ( "X-Test" , "Content-Type" )
4937 . WithMethods ( "PUT" ) ) ;
5038
51- innerBuilder . UseMiddleware < SampleMiddleware > ( ) ;
52- } ) ;
53-
54- app . Map ( "/allow-credentials" , innerBuilder =>
55- {
56- innerBuilder . UseCors ( policy => policy
39+ options . AddPolicy ( "AllowCredentials" , policy => policy
5740 . WithOrigins ( DefaultAllowedOrigin )
5841 . AllowAnyHeader ( )
5942 . WithMethods ( "GET" , "PUT" )
6043 . AllowCredentials ( ) ) ;
6144
62- innerBuilder . UseMiddleware < SampleMiddleware > ( ) ;
63- } ) ;
64-
65- app . Map ( "/exposed-header" , innerBuilder =>
66- {
67- innerBuilder . UseCors ( policy => policy
45+ options . AddPolicy ( "ExposedHeader" , policy => policy
6846 . WithOrigins ( DefaultAllowedOrigin )
6947 . WithExposedHeaders ( "X-AllowedHeader" , "Content-Length" ) ) ;
7048
71- innerBuilder . UseMiddleware < SampleMiddleware > ( ) ;
72- } ) ;
73-
74- app . Map ( "/allow-all" , innerBuilder =>
75- {
76- innerBuilder . UseCors ( policy => policy
49+ options . AddPolicy ( "AllowAll" , policy => policy
7750 . AllowAnyOrigin ( )
7851 . AllowAnyMethod ( )
7952 . AllowAnyHeader ( )
8053 . AllowCredentials ( ) ) ;
54+ } ) ;
55+ services . AddRouting ( ) ;
56+ }
8157
82- innerBuilder . UseMiddleware < SampleMiddleware > ( ) ;
58+ public void Configure ( IApplicationBuilder app , IHostingEnvironment env )
59+ {
60+ var sampleMiddleware = new SampleMiddleware ( context => Task . CompletedTask ) ;
61+
62+ app . UseEndpointRouting ( routing =>
63+ {
64+ routing . Map ( "/allow-origin" , sampleMiddleware . Invoke ) . RequireCors ( "AllowOrigin" ) ;
65+ routing . Map ( "/allow-header-method" , sampleMiddleware . Invoke ) . RequireCors ( "AllowHeaderMethod" ) ;
66+ routing . Map ( "/allow-credentials" , sampleMiddleware . Invoke ) . RequireCors ( "AllowCredentials" ) ;
67+ routing . Map ( "/exposed-header" , sampleMiddleware . Invoke ) . RequireCors ( "ExposedHeader" ) ;
68+ routing . Map ( "/allow-all" , sampleMiddleware . Invoke ) . RequireCors ( "AllowAll" ) ;
8369 } ) ;
8470
71+ app . UseCors ( ) ;
72+
73+ app . UseEndpoint ( ) ;
74+
8575 app . Run ( async ( context ) =>
8676 {
8777 await context . Response . WriteAsync ( "Hello World!" ) ;
0 commit comments