2011-10-21 13 views
0

私は、IsReferenceがtrueに設定されているPOCOエンティティオブジェクトを返す非常に単純なWCF 4.0サービスを持っています。私のサービスからオブジェクトを返すと、プリミティブ型(int、doubleなど)の値が正しく設定され、参照を持つものも正しくシリアル化されています。ステートメント。また、メンバーが[DataMember]で正しくマークされ、パブリックゲッター/セッターがあることも確認しました。しかし、オブジェクトが呼び出し側によって受け取られると、すべてのプリミティブ型は0に設定され、参照付きの型はNULLに設定されます。WCF IsReference = trueが値をデフォルトにリセットしています

助けていただければ幸いです!

try 
     { 
      var stream = new MemoryStream(); 
      var dataContractSerializer = new DataContractSerializer(onlineSellItemDetail.GetType()); 

      dataContractSerializer.WriteObject(stream, onlineSellItemDetail); 


     } 

     catch (Exception ex) 
     { 
      Console.WriteLine(ex.InnerException.ToString()); 
     } 
+0

'DataContractSerializer'コンストラクタには、.NET FrameworkではなくSLで話している場合は循環参照を許可するフラグを持つオーバーロードがあります – Dyppl

答えて

0

これはほとんどの場合、XML、空のXML、または互換性のないXMLがクライアント側で受信されなかったためです。サービス側でストリームが正しくフラッシュされたり閉じられたりしなかったためです。それ以外のときには、クライアント側は完全に有効なXMLを使用して独自のストリームで操作していますが、おそらくストリームの先頭から開始していないXMLを読み取っています。サービス側とクライアント側でトレースを有効にし、トレースログを生成してSvcTraceViewerで分析し、並行してFiddlerを使用してクライアント側とサービス側の両方でワイヤトラフィックを監視すると、確かに答えてください!

関連する問題