3
將ServiceStack升級到4.5.8後,ServiceStack會吃掉由Fluent驗證引發的異常,並在驗證程序中引發異常時通過驗證而不是失敗。這似乎只在運行驗證程序使用SetValidator方法時纔會發生。流利的驗證不起作用異常
這將返回新用戶而不是返回錯誤消息「驗證器異常」。
驗證
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");
}
}
UserValidator
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
this.CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.Name).NotEmpty();
}
}
用戶
public class User
{
public string Name { get; set; }
}
SaveUser
public class SaveUser
{
public int Id { get; set; }
public User User { get; set; }
}
UserService
public class UserService : Service
{
public IHttpResult Post(SaveUser request)
{
return new HttpResult(new SaveUser { Id = -100, User = new User { Name = "bad name" } }, HttpStatusCode.Created);
}
}
真棒響應時間!理想情況下,我們將開發不會拋出異常的代碼,但在罕見(或不是很罕見)的機會下,謝謝! –