2017-03-17 1 views
0

Ich habe einen RESTful Service mit C# ASP.NET getan. In meinen Modellen verwende ich das RequiredAttribute von DataAnnotations (from System.ComponentModel.DataAnnotation). Wenn ich ein Eingabemodell mit fehlenden Eigenschaften (über Swagger oder Postman) sende, erhalte ich doppelte $ {property} ist erforderlich-Nachrichten, obwohl ich nur ein [Required] -Attribut für jede Eigenschaft habe. Ich dachte, vielleicht kommt es von der Vererbung in meinen Modellen (ich habe manchmal auch Drei-Ebenen-Hierarchien und keine dreifachen Nachrichten, also denke ich, das ist nicht das Problem) oder durch die Registrierung der Validierungen doppelt (aber wo sind sie registriert?). Zum Beispiel ist dies ein Elternteil:C# RequiredAttribute Nachrichten auf RESTful Service erscheinen doppelt

public class CertificatePayload : AchievementBase 
{ 
    public string ExternalLink { get; set; } 
} 

und dieses Kind Klasse:

public class AchievementBase 
{ 
    [Required] 
    public string GrantedTo { get; set; } 
    [Required] 
    public string GrantedBy { get; set; } 
} 

Irgendwelche Ideen über das, was ich überprüfen könnte oder was könnte das Problem sein?

Antwort

1

Da kam keine Antwort ... Ein Kollege von mir löste das Problem mit einem Trick: Löschen der erforderlichen Attribute und Hinzufügen der IValidatable-Schnittstelle zum Objekt mit einer validate-Methode zeigte, dass die validate-Methode zweimal aufgerufen wurde. Stacktrace war beide Male gleich. Die richtigen Suchbegriffe fanden am Ende die Lösung: StackOverflow-ASP.NET WEB API 2 - ModelBinding Firing twice per request

Ich musste den ModelValidatorProvider erneut binden. Ich habe es dort angewendet, wo ich meine Entitäten gebunden hatte.