servicestack ServiceStack验证功能引发异常,servicestack,servicestack" /> servicestack ServiceStack验证功能引发异常,servicestack,servicestack" />

servicestack ServiceStack验证功能引发异常

servicestack ServiceStack验证功能引发异常,servicestack,servicestack,我正在尝试在ServiceStack中实现验证功能,以便在调用db操作之前验证我的RequestDTO。 当我尝试验证请求数据时 ValidationResult result = this.AddBookingLimitValidator.Validate(request); 代码会自动抛出验证错误。 我甚至无法调试服务,幕后发生了什么?我能改变这种行为吗?还是我做错了什么。 谢谢 我的请求是: [Route("/bookinglimit", "POST")] [Authenticate]

我正在尝试在ServiceStack中实现验证功能,以便在调用db操作之前验证我的RequestDTO。 当我尝试验证请求数据时

ValidationResult result = this.AddBookingLimitValidator.Validate(request);
代码会自动抛出验证错误。 我甚至无法调试服务,幕后发生了什么?我能改变这种行为吗?还是我做错了什么。 谢谢

我的请求是:

[Route("/bookinglimit", "POST")]
[Authenticate]
public class AddBookingLimit : IReturn<AddBookingLimitResponse>
{       
  public int ShiftId { get; set; }
  public DateTime Date { get; set; }
  public int Limit { get; set; }
}
验证类别:

public class AddBookingLimitValidator : AbstractValidator<AddBookingLimit>
{
  public AddBookingLimitValidator()
  {
    RuleFor(r => r.Limit).GreaterThan(0).WithMessage("Limit 0 dan büyük olmalıdır");
  }
}
AppHost代码:

container.RegisterValidators(typeof(AddBookingLimitValidator).Assembly);
Plugins.Add(new ValidationFeature());
我使用c代码的服务:


对,如果启用了
ValidationFeature
,ServiceStack将在调用服务之前验证请求DTO

要在服务中手动调用验证器,必须首先从
AppHost
中删除此行:

Plugins.Add(new ValidationFeature());
请确保您服务中的验证程序属性的类型为
IValidator
,否则,如果您使用
container.RegisterValidators(typeof(AddBookingLimitValidator.Assembly)
注册验证程序,它将不会被IoC容器注入

公共类TestService:Service
{
公共IValidator验证器{get;set;}
公共请求响应Post(请求)
{
验证(请求);
...
}
}
container.RegisterValidators(typeof(AddBookingLimitValidator).Assembly);
Plugins.Add(new ValidationFeature());
 try
 {
   AddBookingLimitResponse response = ClientHelper.JsonClient.Post(new AddBookingLimit
   {
     Date = DateTime.Parse(DailyBookingLimitDateTextBox.Text),
     Limit = Convert.ToInt32(DailyBookingLimitTextBox.Text),
     ShiftId = Convert.ToInt32(DailyDayTypeSelection.SelectedValue)
    });
    WebManager.ShowMessage(UserMessages.SaveSuccessful.FormatString(Fields.BookingLimit));
  }
  catch (WebServiceException ex)
  {
    WebManager.ShowMessage(ex.ResponseStatus.Message);           
  }
Plugins.Add(new ValidationFeature());
public class TestService : Service
{
    public IValidator<Request> Validator { get; set; }

    public RequestResponse Post(Request request)
    {
        Validator.Validate(request); 
        ...
    }
}