2009-08-10 29 views
1

オブジェクトをWCFサービスに渡していて、何も戻っていない。実際に作業を行うメソッドに渡される変数をチェックし、その時点でオブジェクトに値が設定されていないことに気付きました。ここでは、オブジェクトがあります:WCFオブジェクトパラメータの値が失われる

[DataContract] 
public class Section { 

    [DataMember] 
    public long SectionID { get; set; } 

    [DataMember] 
    public string Title { get; set; } 

    [DataMember] 
    public string Text { get; set; } 

    [DataMember] 
    public int Order { get; set; } 
} 

ここでの方法のためのサービスコードは次のとおりです。

[OperationContract] 
public List<Section> LoadAllSections(Section s) { 
    return SectionRepository.Instance().LoadAll(s); 
} 

実際にこの方法がこれですとSilverlight XAMLファイルに配置されて呼び出すコード:

SectionServiceClient proxy = new SectionServiceClient(); 
proxy.LoadAllSectionsCompleted += new EventHandler<LoadAllSectionsCompletedEventArgs>(proxy_LoadAllSectionsCompleted); 
Section s = new Section(); 
s.SectionID = 4; 
proxy.LoadAllSectionsAsync(s); 
は、

コードが最後にメソッドLoadAllSections(セクションs)に入ると、パラメータのSectionIDは設定されません。私はコードをステップ実行し、IAsyncResultオブジェクトを返す生成コードに入ると、オブジェクトのプロパティが設定されます。しかし、実際にメソッドLoadAllSectionsを呼び出すと、受け取ったパラメータは完全に空白になります。メソッド呼び出しの間に控えめなスティックを作るために設定しなければならないものがありますか?

+0

私はサービスとクライアントの設定を表示できますか?両端の ' 'の部分だけ.... –

+0

datatableは直列化可能ですか? –

答えて

0

これは奇妙に思われますが、それは起こります。 DataTableを返すサービスの別のメソッドがありました。メソッドがDataTableを返そうとすると、渡されたパラメータは値を失います。メソッドを取り出して、すべてが機能します。奇妙な

+0

実際には非常に奇妙です...... –

+1

クライアントとサービスの不一致のようです。サービスを再構築します。サービスを開始する。クライアントアプリケーションでUpdate Service Referenceを実行します(URLが開始済みの再構築されたサービスを指していることを確認してください)。クライアントを再構築して再試行してください。 –

0

私のためにうまく動作します - それは愚かなタイプミスでしょうか?

OperationContractでは、LoadAllSectionsを定義しますが、クライアントコードでは、proxy.GetAllSectionsCompletedイベントにイベントハンドラをアタッチします。これは間違ったハンドラに過ぎませんか?それはproxy.LoadAllSectionsCompletedではありませんか?

マーク

+0

Silverlight XAMLファイルからこのコードを呼び出しても問題はありませんか?私はまだ結果から戻ってきた後に値を得ることができません。上記の入力ミスについては申し訳ありませんが、私はそれを修正します。 – Josh

+0

Silverlightについて知っていることは確かに重要です! –

関連する問題