【发布时间】:2017-09-06 08:33:17
【问题描述】:
将 ServiceStack 升级到 4.5.8 后,ServiceStack 会吃掉 Fluent Validation 抛出的异常,并在验证器内部抛出异常时通过验证而不是失败。这似乎只发生在正在运行的验证器使用 SetValidator 方法时。
这将返回新用户,而不是返回错误消息“Validator Exception”。
验证器
public class SaveUserValidator : AbstractValidator<SaveUser>
{
public SaveUserValidator()
{
this.CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.Id)
.Must(ThrowException);
RuleFor(x => x.User)
.SetValidator(new UserValidator());
}
private bool ThrowException(int arg)
{
throw new ApplicationException("Validator Exception");
}
}
用户验证器
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
this.CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.Name).NotEmpty();
}
}
用户
public class User
{
public string Name { get; set; }
}
保存用户
public class SaveUser
{
public int Id { get; set; }
public User User { get; set; }
}
用户服务
public class UserService : Service
{
public IHttpResult Post(SaveUser request)
{
return new HttpResult(new SaveUser { Id = -100, User = new User { Name = "bad name" } }, HttpStatusCode.Created);
}
}
【问题讨论】:
标签: servicestack fluentvalidation