組み込みのRegistrationServiceに基づいて独自のユーザー登録サービスを実装しているため、以下の最初の数行を含むほとんどをコピーしました...
if (EndpointHost.RequestFilters == null
|| !EndpointHost.RequestFilters.Contains(ValidationFilters.RequestFilter)) //Already gets run
RegistrationValidator.ValidateAndThrow(request, ApplyTo.Post);
// Above line does not get hit as there is the ValidationFilters.RequestFilter
//...but then the code should have previously run validation and failed?
//...Adding the following line causes the validation to run and fail when expected
//...but I should not required it as that is the point of the global ValidationFilters.RequestFilter??
RegistrationValidator.ValidateAndThrow(request, ApplyTo.Post);
私が理解していることから、 ValidationFilters.RequestFilter は以前にヒットされ、検証例外がスローされたはずです。
注意: この行を apphost 構成の最後に追加しました。
Plugins.Add(new ValidationFeature());
そして、これでバリデーターを正常に登録しています:
container.Register<AbstractValidator<UserRegistration>>(new UserRegistrationValidator());
...ValidatorCache.cs の ServiceStack ソース コードの次の行に絞り込みました。
public class ValidatorCache<T>
{
public static IValidator GetValidator(IHttpRequest httpReq)
{
return httpReq.TryResolve<IValidator<T>>();
}
}
...TryResolve がバリデーターを見つけられません。