/// <summary>
 /// Registers Raygun message providers for <see cref="HttpContext"/>.
 /// </summary>
 public static IRaygunBuilder WithHttp(this IRaygunBuilder builder)
 {
     builder.Services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
     builder.Services.AddSingleton <IStartupFilter, RaygunStartupFilter>();
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IRaygunMessageProvider, RequestMessageProvider>());
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IRaygunMessageProvider, ResponseMessageProvider>());
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IRaygunMessageProvider, UserMessageProvider>());
     builder.Services.TryAddEnumerable(ServiceDescriptor.Singleton <IRaygunValidator, LocalValidator>());
     return(builder);
 }
 /// <summary>
 /// Congifures Raygun options.
 /// </summary>
 /// <param name="configuration">Raygun options configuration section.</param>
 public static IRaygunBuilder Configure(this IRaygunBuilder builder, IConfiguration configuration)
 {
     builder.Services.Configure <RaygunOptions>(configuration);
     return(builder);
 }
 /// <summary>
 /// Congifures Raygun options.
 /// </summary>
 /// <param name="options">Action to configure Raygun options.</param>
 public static IRaygunBuilder Configure(this IRaygunBuilder builder, Action <RaygunOptions> options)
 {
     builder.Services.Configure(options);
     return(builder);
 }