servicestack,Validation,servicestack" /> servicestack,Validation,servicestack" />

Validation Post的ServiceStack验证规则集不起作用

Validation Post的ServiceStack验证规则集不起作用,validation,servicestack,Validation,servicestack,我使用ServiceStack构建一个web服务 这是我的验证程序代码: public class AccountValidator : AbstractValidator<AccountModel> { public AccountValidator() { //only for post RuleSet(ServiceStack.ApplyTo.Post, () => { Rule

我使用
ServiceStack
构建一个web服务

这是我的
验证程序
代码:

public class AccountValidator : AbstractValidator<AccountModel>
{

    public AccountValidator()
    {

        //only for post 
        RuleSet(ServiceStack.ApplyTo.Post, () =>
        {
            RuleFor(s => s.Password).Length(30);
        });
    }
}
公共类AccountValidator:AbstractValidator
{
公共帐户验证程序()
{
//仅限邮寄
规则集(ServiceStack.ApplyTo.Post,()=>
{
RuleFor(s=>s.Password).Length(30);
});
}
}
服务代码

public object Post(Account req) {
        AccountModel model = req.ConvertTo<AccountModel>();

        var result = this.Validator.Validate(model);
        if (result.IsValid)
        {
            //is aways true
        }
        throw result.ToException();
    }
public object Post(账户请求){
AccountModel model=req.ConvertTo();
var结果=this.Validator.Validate(模型);
if(result.IsValid)
{
//总是这样吗
}
抛出result.ToException();
}

帐户.Password是“abc”,正如
结果.IsValid
true

结果总是
true
,因为验证器中的
ApplyTo.Post
条件只适用于在请求DTO时验证的规则。
ApplyTo
条件不适用于手动调用的FluentValidation。看

但是,如果您正在将
帐户
转换为
帐户模型
,您可以使用
验证功能
插件在转换为
帐户模型
之前检查
帐户
的验证

因此:

公共类AccountValidator:AbstractValidator
{
公共帐户验证程序()
{
规则集(ApplyTo.Post,()=>RuleFor(s=>s.Password).Length(30));
}
}
//帐户将在邮寄时验证
公共对象Post(帐户请求)
{
//帐户进入请求时有效
AccountModel model=req.ConvertTo();
//假设模型是有效的,因为帐户是有效的,这不安全吗?
}