Skip to content

Error on apply rule 'NotEmpty' for key 'File' #24

@bvanbleyenbergh

Description

@bvanbleyenbergh

Error when generating Swagger documentation. Results in wrong and missing tags in request body.

error:

warn:` MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'NotEmpty' for key 'File'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_3(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 141
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'NotEmpty' for key 'File'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_3(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 141
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'Length' for key 'Name'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_5(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 150
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'Length' for key 'Name'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_5(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 150
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'NotEmpty' for key 'File'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_3(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 141
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'NotEmpty' for key 'File'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_3(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 141
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'Length' for key 'Name'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_5(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 150
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91
warn: MicroElements.Swashbuckle.FluentValidation.FluentValidationRules[0]
Error on apply rule 'Length' for key 'Name'.
System.NullReferenceException: Object reference not set to an instance of an object.
at MicroElements.Swashbuckle.FluentValidation.FluentValidationRules.<>c.b__6_5(RuleContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationRules.cs:line 150
at MicroElements.Swashbuckle.FluentValidation.FluentValidationOperationFilter.ApplyInternal(Operation operation, OperationFilterContext context) in /home/travis/build/micro-elements/MicroElements.Swashbuckle.FluentValidation/src/MicroElements.Swashbuckle.FluentValidation/FluentValidationOperationFilter.cs:line 91

My request object:

public class CreateImageRequest
    {
        public IFormFile File { get; set; }
        public string Name { get; set; }
    }

validator:

public class CreateImageRequestValidator : AbstractValidator<CreateImageRequest>
    {
        public CreateImageRequestValidator()
        {
            RuleFor(_ => _.File).NotEmpty().WithErrorCode(ErrorCode.MustNotBeEmpty.ToString());
            RuleFor(_ => _.File).Must((request, ct) =>
            {
                if ((request?.File?.ContentType == @"image/jpeg") || (request?.File?.ContentType == @"image/png"))
                {
                    return true;
                }
                return false;
            }).WithMessage("Invalid content type").WithErrorCode(ErrorCode.ExpectationNotMet.ToString());
            RuleFor(_ => _.Name).Length(0, 250).WithErrorCode(ErrorCode.IncorrectLength.ToString());
        }
    }

Controller method;

public async Task<IActionResult> CreateProfileImage([FromForm]CreateImageRequest request)
        {
             ...
        }

Parameters in swagger docs: (somehow it's labeled as query parameter and no required tags..)

image

(edited: added validator class)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions