✅ Using services.PostConfigure<ApiBehaviorOptions> to log Model Validation errors in dotnet6?

Is this a safe implementation to log Model Validation errors in dotnet6?

public static IServiceCollection AddModelBindingErrorLogging(this IServiceCollection services)
{
    services.PostConfigure<ApiBehaviorOptions>(options =>
    {
        var builtInFactory = options.InvalidModelStateResponseFactory;

        options.InvalidModelStateResponseFactory = context =>
        {
            try //dont crash the entire app if we cant run this routine
            {
                var loggerFactory = context.HttpContext.RequestServices.GetRequiredService<ILoggerFactory>();

                var descriptor = context.ActionDescriptor as ControllerActionDescriptor;
                var actionName = descriptor.ActionName;
                var controllerName = descriptor.ControllerName;
                var logger = loggerFactory.CreateLogger("ModelBindingExceptionLogger");

                string methodName = $"{controllerName}Controller-{actionName}";
                try
                {
                    logger.LogError($"ModelValidation Errors invoking {methodName}. Details: {JsonConvert.SerializeObject(context.ModelState.Errors())}");
                }
                catch (Exception ex)
                {
                    logger.LogError(ex, $"Unable to get ModelValidation Errors - {methodName}");
                }
            }
            catch { }
            return builtInFactory(context);
        };
    });
    return services;
}
Was this page helpful?