我必须忽视在我创建的基本服务堆栈应用程序中启动流畅验证的事情。 我一直在关注找到here的例子。对于我的生活,我似乎无法让我的验证员解雇???? 面包屑,我必须有一些愚蠢的东西...... ????
我正在针对用户服务(http://my.service/users)发出用户请求,请求直接通过而不调用已注册的相应验证程序。
请求是: {“姓名”:“”,“公司”:“公司”,“年龄”:10,“计数”:110,“地址”:“123 brown str。”}
回应: “用户保存......”
这是代码: 的 1.DTO
[Route("/users")]
public class User
{
public string Name { get; set; }
public string Company { get; set; }
public int Age { get; set; }
public int Count { get; set; }
public string Address { get; set; }
}
2.Validator
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
RuleFor(r => r.Name).NotEmpty();
RuleFor(r => r.Age).GreaterThan(0);
}
}
3.AppHostBase
public class ValidationAppHost : AppHostBase
{
public ValidationAppHost()
: base("Validation Test", typeof(UserService).Assembly)
{
}
public override void Configure(Funq.Container container)
{
Plugins.Add(new ValidationFeature());
//This method scans the assembly for validators
container.RegisterValidators(typeof(UserValidator).Assembly);
}
}
4.Service
public class UserService : Service
{
public object Any(User user)
{
return "user saved...";
}
}
5.Global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
new ValidationAppHost().Init();
}
答案 0 :(得分:7)
确定....发现问题....我(错误地)安装(通过nuget)并在我的项目中引用了带有Service-Stack的FluentValidation实现的FluentValidation.dll(请参阅命名空间ServiceStack.FluentValidation
)。
一旦我删除了这个唯一不正确的FluentValidation引用,并确保我的验证器从AbstractValidator
的服务栈实现扩展,验证器正确触发...