У меня есть класс:вопроса регистрации свободно проверки в webapi2 через Виндзорский замок
WebApiInstaller : IWindsorInstaller
, который содержит следующее:
container.Register(
Classes
.FromThisAssembly()
.BasedOn(typeof(AbstractValidator<>))
.WithService
.Base());
var container = new WindsorContainer();
container.Install(new WebApiInstaller());
GlobalConfiguration.Configuration.DependencyResolver = new WindsorHttpDependencyResolver(container);
в моем global.cs файл я в настоящее время использую это:
var container = new WindsorContainer();
container.Install(new WebApiInstaller());
GlobalConfiguration.Configuration.DependencyResolver = new WindsorHttpDependencyResolver(container);
FluentValidationModelValidatorProvider.Configure(GlobalConfiguration.Configuration, provider => provider.ValidatorFactory = new WindsorFluentValidatorFactory(container.Kernel));
Здесь WindsorFluentValidatorFactory выглядит следующим образом:
public class WindsorFluentValidatorFactory : ValidatorFactoryBase
{
private readonly IKernel _kernel;
public WindsorFluentValidatorFactory(IKernel kernel)
{
_kernel = kernel;
}
public override IValidator CreateInstance(Type validatorType)
{
return _kernel.HasComponent(validatorType)
? _kernel.Resolve<IValidator>(validatorType)
: null;
}
}
Моя конечная точка выглядит следующим образом:
public IHttpActionResult AddPointGivenGeoJsonPointDto([FromBody] Bla blaDto)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
}
Bla оформлен так:
[Validator(typeof(BlaValidator))]
public class Bla
и валидатор выглядит следующим образом:
public class BlaValidator : AbstractValidator<Bla>
К сожалению, ModelState является никогда не было недопустимым, несмотря на то, что в тесте интеграции были допущены недопустимые объекты. Может ли кто-нибудь увидеть что-то не так с моей регистрацией windsor.castle, которая, я думаю, не работает.
Спасибо. Я вижу бетон BlaValidator, зарегистрированный как AbstractValidator. У меня есть подозрение, что: FluentValidationModelValidatorProvider.Configure (GlobalConfiguration.Configuration, provider => provider.ValidatorFactory = new WindsorFluentValidatorFactory (container.Kernel)); не проверяет, когда я проверяю ModelState.IsValid. Какая часть жизненного цикла webapi проверяет, является ли modelstate.isvalid? –
cs0815
Связывание модели применяется после фильтров авторизации и фильтров действий, (OnActionExecuting & OnActionExecuted). – Derek
Возможно, мне нужно что-то реализовать здесь, что вызывает проверку? В идеале я хочу приблизиться к этому: http://sergeyakopov.com/restful-validation-with-asp-net-web-api-and-fluentvalidation/ – cs0815