5

私が作成した基本的なService-Stackアプリケーション内でfluent-validationを起動することに関して何かを見落としているに違いありません。ここにある例に従っています。私の人生では、バリデーターを起動させることができないようです???? クラム、私が見逃している愚かな何かがあるに違いない....???

User-Service ( http://my.service/users )に対してユーザー リクエストを発行しています。リクエストは、登録されている適切なバリデータを呼び出さずにそのまま処理されます。

リクエスト: {"Name":"","Company":"Co","Age":10,"Count":110,"Address":"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.バリデーター

 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.サービス

 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();
    }
4

1 に答える 1

8

わかりました....問題が見つかりました....私は(エラーで)(nuget経由で)インストールし、プロジェクト内でService-StackのFluentValidation実装を使用してFluentValidation.dllを参照しました(名前空間を参照ServiceStack.FluentValidation)。これを唯一の誤った FluentValidation 参照を削除し、AbstractValidatorバリデーターが正しく起動されたバリデーターのサービススタック実装から拡張されたことを確認したら...

于 2013-04-03T21:07:54.803 に答える