Given_CorrelationId_NotPresent_WhenOptionsAllowBypassingUrl_IfUrlStartsAsSpecified_ThenResponseShouldReturn_200OK()
        {
            // Arrange
            var optionsBuilder = new CorrelationOptionsBuilder();
            var options        = optionsBuilder.ExcludeUrl(f => f.WhenStartsWith("/diagnostics/")).EnforceCorrelation()
                                 .Build();
            var builder = new WebHostBuilder();

            builder.UseStartup <CorrelatedRequestsStartup>();
            builder.ConfigureServices(services => { services.Replace(ServiceDescriptor.Singleton(c => options)); });

            // Act
            HttpResponseMessage response;

            using (var server = new TestServer(builder))
            {
                using (var client = server.CreateClient())
                {
                    response = await client.GetAsync("/diagnostics/logs");
                }
            }

            // Assert
            response.EnsureSuccessStatusCode();
        }
示例#2
0
        public static IServiceCollection AddRequestCorrelation(this IServiceCollection services)
        {
            var builder = new CorrelationOptionsBuilder().EnforceCorrelation();
            var options = builder.Build();

            services.TryAddSingleton(options);
            services.TryAddSingleton <ICorrelationIdProvider, GuidBasedCorrelationIdProvider>();
            return(services);
        }
示例#3
0
        public static IServiceCollection AddRequestCorrelation(this IServiceCollection services,
                                                               Func <IExcludeRequests, IBuildOptions> optionsProvider)
        {
            if (optionsProvider == null)
            {
                throw new ArgumentNullException(nameof(optionsProvider));
            }

            var builder = new CorrelationOptionsBuilder();
            var options = optionsProvider(builder).Build();

            services.TryAddSingleton(options);
            services.TryAddSingleton <ICorrelationIdProvider, GuidBasedCorrelationIdProvider>();
            return(services);
        }