2013-03-26 15 views
5

Ich muss etwas über die fließend-Validierung in der grundlegenden Service-Stack Anwendung, die ich erstellt haben. Ich habe das gefundene Beispiel here verfolgt. Für das Leben von mir kann ich nicht scheinen, meine Prüfer Feuer zu bekommen ???? Krümel, da muss etwas Dummes sein das ich vermisse .... ???ServiceStack und FluentValidation NICHT feuern

Ich erteile eine Benutzeranfrage gegen den User-Service (http://my.service/users), die Anfrage geht direkt durch, ohne den entsprechenden registrierten Validator aufzurufen.

Anfrage ist: { "Name": "", "Gesellschaft": "Co", "Alter": 10, "Count": 110, "Adresse": "123 braun str".}

Antwort: "user gespeichert ..."


Hier ist der Code: 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

nichts herausragt. Wie senden Sie Ihre Anfrage? Fügt das Hinzufügen des Formats (http: //my.service/users? Format = json) zum Ende die Antwort hinzu? – paaschpa

+0

Ich benutze nur die Google Chrome App. [REST-Konsole] (http://codeinchaos.com/post/3610180596/rest-console-a-google-chrome-rest-http-client). Ich feuere den JSON gegen meine Localhost-Instanz einer Standard-ASP.NET-Website. – darthal

+0

hmm ... Kopieren Sie Ihren Code und verwenden Sie REST-Konsoleneinstellungen 'Ziel> Request URI' = localhost/users, 'Ziel> Request Methode' = POST, 'Body> Content Type' = application/json, 'Body> RAW BODy' = {Ihre Anfrage oben} und klicken Sie auf "Senden" die Validierung ausgelöst. Sind alle anderen Felder REST-Console leer (zB Request Parameter)? Siehe auch http://stackoverflow.com/questions/15297745/servicestack-validation-not-always-firing/15345117#15345117, um zu überprüfen, ob Plugins/Filter korrekt eingerichtet sind. – paaschpa

Antwort

6

Ok .... das Problem gefunden .... I (irrtümlicherweise) installiert (via nuget) und in meinem Projekt der FluentValidation.dll mit Service-Stacks FluentValidation Implementierung verwiesen (siehe Namensraum ServiceStack.FluentValidation). Sobald ich dies die einzige falsche FluentValidation Referenz entfernt und sichergestellt, dass mein Validator von der Service-Stack-Implementierung der AbstractValidator die Validatoren korrekt abgefeuert erweitert ...