문제

DataContract] 클래스가 정의 된 WCF 서비스가 있습니다. 각 속성에는 [Datamember] 속성이 있으며 몇 가지 데이터 주석 속성 [필수] 및 [StringLength]를 몇 가지 속성에 추가했습니다.

그런 다음이 서비스를 ASP.NET MVC 응용 프로그램에서 서비스 참조로 소비합니다. 사용하는 모든 속성 목록을 얻을 때

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

나는 데이터 주석 중 어느 것도 통과하지 못했습니다. 이것이 WCF의 한계입니까, 아니면 여기서 근본적으로 잘못된 일을하고 있습니까?

도움이 되었습니까?

해결책

데이터 계약이 전선으로 전송 될 때 속성은 직렬화되지 않습니다. 귀하가 속성과 관련된 ESTially Meta 데이터에서 작성한 새로운 속성 및 그 이전에 속성이 속하는 유형입니다. 이것은 데이터가 아니며 사용할 수 없습니다.

ASP.NET MVC 애플리케이션에 서비스 참조를 추가했다고 생각합니다. 이는 지정되지 않으면 데이터 계약을 나타내는 새로운 프록시 클래스를 생성합니다.

서비스 참조를 추가하면 고급 버튼을 클릭하면 '기존 유형 사용'이 확인되었는지 확인하십시오. 이를 통해 서비스가 기존의 Conract를 사용할 수 있습니다.

클라이언트 애플리케이션은 서비스에서 반환하는 유형에 대한 지식이 있어야하므로 모범 사례가 아닐 수 있습니다. 서비스가 직접 사용되는 경우 괜찮을 수 있습니다.이 경우 ASP.NET MVC 응용 프로그램에서 계약에 대한 참조를 추가해야합니다.

다른 팁

Odata 팀은 검증 메타 데이터를 "어휘"로 노출시키기 위해 솔루션을 사용하고 있습니다.

추가 정보: http://www.odata.org/blog/vocabularies

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top