GlobalErrorHandler.Middleware
1.0.0
dotnet add package GlobalErrorHandler.Middleware --version 1.0.0
NuGet\Install-Package GlobalErrorHandler.Middleware -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GlobalErrorHandler.Middleware" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GlobalErrorHandler.Middleware --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: GlobalErrorHandler.Middleware, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install GlobalErrorHandler.Middleware as a Cake Addin #addin nuget:?package=GlobalErrorHandler.Middleware&version=1.0.0 // Install GlobalErrorHandler.Middleware as a Cake Tool #tool nuget:?package=GlobalErrorHandler.Middleware&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
GlobalErrorHandler.Middleware
Un middleware liviano y reutilizable para el manejo global de errores en aplicaciones .NET, compatible con .NET Standard 2.0.
📋 Características
- ✅ Compatible con .NET Standard 2.0
- 🚀 Fácil integración mediante métodos de extensión
- ⚙️ Altamente configurable
- 🎯 Mapeo automático de excepciones a códigos HTTP
- 📝 Logging integrado
- 🔍 Soporte para diferentes entornos (Development/Production)
- 🔒 Manejo seguro de errores sensibles
- 📦 Respuestas JSON consistentes
📥 Instalación
Package Manager Console
Install-Package GlobalErrorHandler.Middleware
.NET CLI
dotnet add package GlobalErrorHandler.Middleware
🚀 Uso Básico
using GlobalErrorHandler.Middleware;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Agregar el middleware de manejo de errores
app.UseGlobalErrorHandler(new GlobalErrorHandlerOptions
{
DefaultErrorMessage = "Ha ocurrido un error inesperado",
WriteIndentedJson = true
});
// ... resto de la configuración
}
}
⚙️ Configuración
Opciones Disponibles
Opción | Tipo | Default | Descripción |
---|---|---|---|
DefaultErrorMessage | string | "An unexpected error occurred" | Mensaje predeterminado para errores no manejados |
WriteIndentedJson | bool | false | Formatea la respuesta JSON con indentación |
Ejemplo de Configuración Completa
app.UseGlobalErrorHandler(new GlobalErrorHandlerOptions
{
DefaultErrorMessage = "Oops! Algo salió mal",
WriteIndentedJson = true
});
📝 Formato de Respuesta
Las respuestas de error siguen esta estructura:
{
"httpResponse": 500,
"message": "Descripción del error",
"result": null
}
🎯 Mapeo de Excepciones
Excepción | Código HTTP |
---|---|
ArgumentException | 400 |
NotSupportedException | 400 |
ApplicationException | 400 |
UnauthorizedAccessException | 401 |
HttpRequestException | 503 |
Exception (otros) | 500 |
📚 Ejemplos de Uso
Manejo de Excepciones Básicas
[ApiController]
[Route("[controller]")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
throw new ArgumentException("ID de producto inválido");
// Respuesta:
// Status: 400
// {
// "httpResponse": 400,
// "message": "ID de producto inválido",
// "result": null
// }
}
}
Errores No Controlados
[HttpPost]
public IActionResult Create()
{
throw new Exception("Error interno al crear el producto");
// En desarrollo:
// Status: 500
// {
// "httpResponse": 500,
// "message": "Error interno al crear el producto - [StackTrace]",
// "result": null
// }
// En producción:
// Status: 500
// {
// "httpResponse": 500,
// "message": "Ha ocurrido un error inesperado",
// "result": null
// }
}
📋 Requerimientos
- .NET Standard 2.0 o superior
- ASP.NET Core 2.1 o superior
📦 Dependencias
- Microsoft.AspNetCore.Hosting.Abstractions (>= 2.1.0)
- Microsoft.Extensions.Logging.Abstractions (>= 2.1.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.1.0)
- Newtonsoft.Json (>= 13.0.1)
✅ Mejores Prácticas
- Orden del Middleware: Coloca el middleware al principio del pipeline para capturar todas las excepciones.
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseGlobalErrorHandler(); // Primero
app.UseRouting(); // Después
app.UseAuthentication(); // ...
app.UseAuthorization(); // ...
- Configuración por Ambiente:
app.UseGlobalErrorHandler(new GlobalErrorHandlerOptions
{
DefaultErrorMessage = app.Environment.IsDevelopment()
? "Error en desarrollo"
: "Error en producción"
});
📄 Licencia
Este proyecto está bajo la licencia MIT - ver el archivo LICENSE.md para más detalles.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 was computed. 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 was computed. 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 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.AspNetCore.Hosting.Abstractions (>= 2.1.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.1.0)
- Microsoft.Extensions.Logging.Abstractions (>= 2.1.0)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 114 | 12/14/2024 |