/// <summary>
        /// Adds instrumentation for ASP.NET Core with the given options.
        /// </summary>
        public static IInstrumentationBuilder AddAspNetCore(this IInstrumentationBuilder builder, Action <AspNetCoreOptions> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var optionsInstance = new AspNetCoreOptions();

            options(optionsInstance);

            return(AddAspNetCore(builder, optionsInstance));
        }
 public DefaultRouteModelConvention(
     IOptions <AspNetCoreOptions> aspNetCoreOptions,
     IOptions <MultiTenancyOptions> multiTenancyOptions,
     IOptions <RouteTenantResolverOptions> routeTenantResolverOptions,
     IPluralizationService pluralizationService,
     ILogger <IRouteModelConvention> logger)
 {
     this.multiTenancyOptions        = multiTenancyOptions.Value;
     this.aspNetCoreOptions          = aspNetCoreOptions.Value;
     this.routeTenantResolverOptions = routeTenantResolverOptions.Value;
     this.pluralizationService       = pluralizationService;
     this.logger = logger;
 }
示例#3
0
        /// <summary>
        /// Configures the stack to use HTTP messaging.
        /// </summary>
        /// <param name="stack">The this instance.</param>
        /// <param name="configuration">The configuration routine.</param>
        /// <returns>Returns the instance for method chaining.</returns>
        public static KunoStack UseHttpMessaging(this KunoStack stack, Action <AspNetCoreOptions> configuration = null)
        {
            var options = new AspNetCoreOptions();

            configuration?.Invoke(options);
            stack.Configuration.GetSection("Kuno:AspNetCore").Bind(options);

            stack.Use(e =>
            {
                e.RegisterType <HttpRouter>().AsImplementedInterfaces().AsSelf().SingleInstance();
            });

            if (options.Subscriptions != null && options.Subscriptions.Remote.Any())
            {
                Subscribe(stack, options.Subscriptions);
            }

            return(stack);
        }
示例#4
0
        /// <summary>
        /// Starts and runs an API to access the stack.
        /// </summary>
        /// <param name="stack">The this instance.</param>
        /// <param name="configuration">The configuration routine.</param>
        /// <returns>Returns the instance for method chaining.</returns>
        public static KunoStack RunWebHost(this KunoStack stack, Action <AspNetCoreOptions> configuration = null)
        {
            stack.UseHttpMessaging();
            stack.Use(e =>
            {
                e.RegisterType <AspNetCoreRequestContext>().As <IRequestContext>().AsSelf();
            });

            var options = new AspNetCoreOptions();

            configuration?.Invoke(options);
            stack.Configuration.GetSection("Kuno:AspNetCore").Bind(options);

            Startup.Stack   = stack;
            Startup.Options = options;

            var builder = new WebHostBuilder()
                          .UseKestrel()
                          .UseContentRoot(Directory.GetCurrentDirectory())
                          .UseIISIntegration()
                          .UseStartup <Startup>();

            if (options.Urls?.Any() ?? false)
            {
                builder.UseUrls(options.Urls);
            }

            var host = builder.Build();

            if (options.Subscriptions != null && options.Subscriptions.Remote.Any())
            {
                Task.Run(() => Subscribe(stack, options.Subscriptions));
            }

            host.Run();

            return(stack);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ApiKeyMiddleware"/> class.
 /// </summary>
 /// <param name="next">The next delegate.</param>
 /// <param name="options">The options for AspNetCore.</param>
 public ApiKeyMiddleware(RequestDelegate next, AspNetCoreOptions options)
 {
     _next    = next;
     _options = options;
 }
示例#6
0
 /// <summary>
 ///     Builds the aspnet core convention
 /// </summary>
 /// <param name="options"></param>
 public AspNetCoreConvention(AspNetCoreOptions?options = null)
 {
     _options = options ?? new AspNetCoreOptions();
 }
        /// <summary>
        /// Adds instrumentation for ASP.NET Core with the given options.
        /// </summary>
        public static IInstrumentationBuilder AddAspNetCore(this IInstrumentationBuilder builder, AspNetCoreOptions options)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            builder.Services.AddSingleton <IDiagnosticInterceptor, RequestInterceptor>();
            builder.Services.AddSingleton <IDiagnosticInterceptor, MvcInterceptor>();

            if (options.StartAutomatically)
            {
                builder.Services.AddTransient <IStartupFilter, StartInstrumentationStartupFilter>();
            }

            return(builder);
        }