2009-10-27 4 views
0

난 항상 클라이언트 측에서 호출 할 그러나 때재산권 클라이언트 측에서 사용하는 몇 가지 초기 값으로 WCF 서비스에

private int mFieldLength_Name = 50; 
    [DataMember] 
    public int FieldLength_Name 
    { 
     get { return mFieldLength_Name; } 
     private set { mFieldLength_Name = value; } 
    } 

아래와 같이 I는 초기 값으로 WCF 서비스 클래스의 속성이 '50'이 아니라 '0'을 반환하십시오.

이 문제를 어떻게 해결합니까?

내가 시도 [DataMember를 (EmitDefaultValue = 거짓)] 하지만 작동하지 않습니다 ...

:(감사합니다,

Riju

답변

1

당신이에 DataContracts의 동일한 어셈블리를 사용하고 있습니까 클라이언트에서 사용중인 것처럼 클라이언트에서 사용하기 위해 자체 계약을 생성하는 경우 유선을 통해 변환 할 수 없기 때문에 초기화에 대해 알지 못합니다.

W 유형에 대해 '자연스럽지 않은'기본값을 선택합니다 (예 : 정수 대신 0 대신 50을 사용하는 경우) DataContractSerializer가 값이 기본값임을 알리고이를 내 보내지 않도록 DefaultValueAttribute를 데이터 멤버에 적용해야합니다.

+0

하이 드류, 응답 지연에 따른 등을위한 죄송합니다 ... 제가 기본 값으로 그 재산 아직도 할 수 "50"에서 DefaultValueAttribute을 시도 . – Riju

+0

또한 데이터 컨트랙트 클래스 자체에서 실제로 속성 (또는 배킹 필드)을 50으로 초기화해야합니다. WCF는 속성을 설정하지 않기 때문입니다. 심지어 XML에 구문 분석을위한 요소가 없기 때문입니다. .NET은 분명히이를 0으로 초기화합니다. –

4

나는 똑같은 문제에 직면했다. 동일한 시도를 많이 한 후에 문제가 DataType으로 거짓말하고 있음을 알게되었습니다.

나는 데이터베이스에 따라 데이터 유형 Int32가 있고, 속성은 intstring 기본적으로 직렬화 할 수있는 한, 어떤 컴파일 또는 실행 문제를 제공하지 않습니다 유형 String을 가지고 있었다 사용했다.

하지만 매번 빈 값이 표시되면서 속성 유형을 Int32으로 변경했으며 매력적으로 작동했습니다. 일단 서비스 호출을하기 전까지 컴파일러에서 올바른 데이터를 보여 주므로 데이터 유형을 확인하십시오.하지만 서비스를 건너 자마자 빈 데이터가 표시됩니다.

따라서 데이터 유형이 동일하지 않은 경우 솔루션을 한 줄로 말하면됩니다. 빈 값을 반환 할 수 있습니다.

관련 문제