Frage

Ich habe einen WCF-Dienst, der eine [Datacontract] Klasse darin definiert hat. Jede der Eigenschaften hat das [Datamember] Attribut, und ich habe ein paar Daten Annotation-Attribute [Erforderlich] und [StringLength], um ein paar der Eigenschaften hinzugefügt.

ich verbrauchen dann diesen Dienst in einer asp.net MVC-Anwendung als Service-Referenz. Wenn ich eine Liste aller Attribute mit

var attr= from prop in TypeDescriptor.GetProperties(instance).Cast<PropertyDescriptor>()
                        from attribute in prop.Attributes.OfType<ValidationAttribute>()
                        select attribute;

Ich sehe keine der Daten Anmerkungen durch gekommen. Ist dies eine Einschränkung der WCF oder bin ich etwas zu tun, hier grundsätzlich falsch?

War es hilfreich?

Lösung

Die Attribute werden nicht serialisiert werden, wenn die Daten Vertrag über den Draht geschickt. Das neue Attribut, das Sie in esentially Meta-Daten erstellt haben, die mit dem Eigentum und therfore den Typ zugeordnet ist, in dem das Vermögen gehört. Dies ist nicht Daten und sind somit nicht verfügbar.

Ich glaube, dass Sie einen Dienstverweis in Ihrer asp.net MVC-Anwendung, diesen Willen hinzugefügt haben, sofern nicht anders angegeben, neue Proxy-Klassen erstellen, die Ihre Daten Vertrag.

Wenn Sie den Dienstverweis hinzufügen, wenn Sie auf die Schaltfläche Erweitert klicken stellen Sie sicher, dass die ‚Verwendung vorhandenen Typen‘ aktiviert ist. Diese sorgen dafür, dass Sie da Ihre bestehende conract verwenden.

Das kann nicht am beste Praxis, da die Client-Anwendung Wissen über die Art haben, müssen Sie den Dienst zurückkehren. Diese Ordnung sein kann, wenn der Service nur für Sie in diesem Fall verwendet wird Ihnen Auftrag in Ihrem asp.net MVC-Anwendung Sie einen Verweis hinzufügen müssen.

Andere Tipps

Das OData-Team wird in einer Lösung arbeiten, um die Validierung von Metadaten als „Vokabulare“ aussetzen.

Weitere Informationen: http://www.odata.org/blog/vocabularies

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top