/// <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; }
/// <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); }
/// <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; }
/// <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); }