/// <summary> /// Configure application to use standart Lykke middleware /// </summary> /// <param name="app">Application builder</param> /// <param name="createGlobalErrorResponse">Create global error response delegate</param> /// <param name="logClientErrors">Enables logging of the requests with 4xx response codes</param> public static void UseLykkeMiddleware( [NotNull] this IApplicationBuilder app, [NotNull] CreateErrorResponse createGlobalErrorResponse, bool logClientErrors = false) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (createGlobalErrorResponse == null) { throw new ArgumentNullException(nameof(createGlobalErrorResponse)); } app.Use(async(context, next) => { // enable ability to seek on request stream within any host, // but not only Kestrel, for any subsequent middleware context.Request.EnableRewind(); await next(); }); var logFactory = app.ApplicationServices.GetRequiredService <ILogFactory>(); app.UseMiddleware <GlobalErrorHandlerMiddleware>( logFactory, createGlobalErrorResponse); if (logClientErrors) { app.UseMiddleware <ClientErrorHandlerMiddleware>(logFactory); } }
public static void UseLykkeMiddleware( this IApplicationBuilder app, string componentName, CreateErrorResponse createGlobalErrorResponse, bool logClientErrors = false) { app.Use(async(context, next) => { // enable ability to seek on request stream within any host, // but not only Kestrel, for any subsequent middleware context.Request.EnableRewind(); await next(); }); var log = app.ApplicationServices.GetRequiredService <ILog>(); app.UseMiddleware <GlobalErrorHandlerMiddleware>( log, componentName, createGlobalErrorResponse); if (logClientErrors) { app.UseMiddleware <ClientErrorHandlerMiddleware>( log, componentName); } }
/// <summary> /// Middleware that handles all unhandled exceptions and uses delegate to generate the error response object. /// </summary> public UnhandledExceptionResponseMiddleware( RequestDelegate next, CreateErrorResponse errorResponseFactory, ResolveHttpStatusCode httpStatusCodeResolver) { _next = next; _errorResponseFactory = errorResponseFactory ?? throw new ArgumentNullException(nameof(errorResponseFactory)); _httpStatusCodeResolver = httpStatusCodeResolver ?? throw new ArgumentNullException(nameof(httpStatusCodeResolver)); }
/// <summary> /// Middleware that handles all unhandled exceptions and use delegate to generate error response /// </summary> public GlobalErrorHandlerMiddleware(RequestDelegate next, ILogFactory logFactory, CreateErrorResponse createErrorResponse) { if (logFactory == null) { throw new ArgumentNullException(nameof(logFactory)); } _log = logFactory.CreateLog(this); _createErrorResponse = createErrorResponse ?? throw new ArgumentNullException(nameof(createErrorResponse)); _next = next; }
public GlobalErrorHandlerMiddleware(RequestDelegate next, ILog log, string componentName, CreateErrorResponse createErrorResponse) { if (log == null) { throw new ArgumentNullException(nameof(log)); } _log = log.CreateComponentScope(componentName); _createErrorResponse = createErrorResponse ?? throw new ArgumentNullException(nameof(createErrorResponse)); _next = next; }
internal LykkeConfigurationOptions() { DefaultErrorHandler = ex => ErrorResponse.Create("Technical problem"); }