Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/Bugsnag.AspNet.Core/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@ public static IServiceCollection AddBugsnag(this IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

// configure the delivery once here to avoid creating a new HttpClient
// for every request when a proxy is set in the configuration.
services.AddSingleton<IStartupFilter>(provider => {
var configuration = provider.GetService<IOptions<Configuration>>();
DefaultDelivery.Instance.Configure(configuration.Value);
return new BugsnagStartupFilter();
});

return services
.AddSingleton<IStartupFilter, BugsnagStartupFilter>()
.AddScoped<IClient, Client>(context => {
var configuration = context.GetService<IOptions<Configuration>>();
var client = new Client(configuration.Value);
var client = new Client(configuration.Value, DefaultDelivery.Instance);
return client;
});
}
Expand Down
11 changes: 9 additions & 2 deletions src/Bugsnag.AspNet/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ public static class Client

private static IClient _globalClient;

static Client()
{
// configure the delivery once here to avoid creating a new HttpClient
// for every request when a proxy is set in the configuration.
DefaultDelivery.Instance.Configure(ConfigurationSection.Configuration.Settings);
}

public static IClient Current
{
get
Expand All @@ -27,7 +34,7 @@ public static IClient Current
{
// this is the first time a client has been requested for this
// request scope, so create one and attach it to the request
var requestScopedClient = new Bugsnag.Client(ConfigurationSection.Configuration.Settings);
var requestScopedClient = new Bugsnag.Client(ConfigurationSection.Configuration.Settings, DefaultDelivery.Instance);
HttpContext.Current.Items[HttpContextItemsKey] = requestScopedClient;
return requestScopedClient;
}
Expand All @@ -39,7 +46,7 @@ public static IClient Current
{
if (_globalClient == null)
{
_globalClient = new Bugsnag.Client(ConfigurationSection.Configuration.Settings);
_globalClient = new Bugsnag.Client(ConfigurationSection.Configuration.Settings, DefaultDelivery.Instance);
}
}

Expand Down
12 changes: 11 additions & 1 deletion src/Bugsnag/Client.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,21 @@ public Client(string apiKey) : this(new Configuration(apiKey))
/// Constructs a client with the default storage and delivery classes.
/// </summary>
/// <param name="configuration"></param>
public Client(IConfiguration configuration) : this(configuration, DefaultDelivery.Instance, new Breadcrumbs(configuration), new SessionTracker(configuration))
public Client(IConfiguration configuration) : this(configuration, DefaultDelivery.Instance)
{
DefaultDelivery.Instance.Configure(configuration);
}

/// <summary>
/// Constructs a client with the specified configuration and delivery classes.
/// </summary>
/// <param name="configuration"></param>
/// <param name="delivery"></param>
public Client(IConfiguration configuration, IDelivery delivery) : this(configuration, delivery, new Breadcrumbs(configuration), new SessionTracker(configuration))
{

}

/// <summary>
/// Constructs a client with the specified storage and delivery classes.
/// </summary>
Expand Down