GlobalErrorHandler 2.1.1
dotnet add package GlobalErrorHandler --version 2.1.1
NuGet\Install-Package GlobalErrorHandler -Version 2.1.1
<PackageReference Include="GlobalErrorHandler" Version="2.1.1" />
<PackageVersion Include="GlobalErrorHandler" Version="2.1.1" />
<PackageReference Include="GlobalErrorHandler" />
paket add GlobalErrorHandler --version 2.1.1
#r "nuget: GlobalErrorHandler, 2.1.1"
#:package GlobalErrorHandler@2.1.1
#addin nuget:?package=GlobalErrorHandler&version=2.1.1
#tool nuget:?package=GlobalErrorHandler&version=2.1.1
GlobalErrorHandler NuGet Package
Overview
The GlobalErrorHandler NuGet package provides middleware and extension methods to handle and log exceptions globally in ASP.NET Core applications. It includes an ErrorHandlerMiddleware to catch exceptions and an extension method UseErrorHandler to easily integrate the middleware into the application pipeline.
Reports are published through a pluggable IErrorHandlerSink. By default a NullErrorHandlerSink is registered (no transport). Telegram delivery via LoggerBot is shipped in the same package and is opt-in through AddLoggerBotSink().
Installation
dotnet add package GlobalErrorHandler
Usage
using GlobalErrorHandler;
var builder = WebApplication.CreateBuilder(args);
services.AddGlobalErrorHandler(); // default = NullErrorHandlerSink (no Telegram)
services.AddLoggerBotSink(); // optional — opts into Telegram delivery via LoggerBot
var app = builder.Build();
app.UseErrorHandler();
app.MapControllers();
app.Run();
Customization
Custom exception → status code mappings
ExceptionHandler.Register<MyDomainException>(HttpStatusCode.Conflict);
Built-in defaults: BadRequestException → 400, NotFoundException → 404, PermissionDeniedException → 403. Override them by calling Register<T>(...) again.
Send reports to Telegram (LoggerBot)
LoggerBot itself still needs its own DI registration (services.AddLoggerService(...)).
using GlobalErrorHandler;
builder.Services.AddGlobalErrorHandler();
builder.Services.AddLoggerBotSink(); // swaps the no-op sink for LoggerBot
Write your own sink
Implement IErrorHandlerSink and register it in DI (replacing the default NullErrorHandlerSink).
public sealed class MySerilogSink : IErrorHandlerSink
{
public Task PublishAsync(string title, Exception ex, RequestData? request, CancellationToken ct)
{
// forward to Serilog, Seq, Elastic, etc.
return Task.CompletedTask;
}
}
builder.Services.AddGlobalErrorHandler();
builder.Services.Replace(ServiceDescriptor.Singleton<IErrorHandlerSink, MySerilogSink>());
Target frameworks
net6.0; net7.0; net8.0; net9.0; net10.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- LoggerBot (>= 1.5.3)
- Microsoft.AspNetCore.Http (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
-
net6.0
- LoggerBot (>= 1.5.3)
- Microsoft.AspNetCore.Http (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
-
net7.0
- LoggerBot (>= 1.5.3)
- Microsoft.AspNetCore.Http (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
-
net8.0
- LoggerBot (>= 1.5.3)
- Microsoft.AspNetCore.Http (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
-
net9.0
- LoggerBot (>= 1.5.3)
- Microsoft.AspNetCore.Http (>= 2.2.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.