2009-07-16 3 views
2

REST WCFサービスから汎用ICollectionを返そうとしています。次は可能なはずですか?WCF WebGetとICollection <>

[ServiceContract] 
public class WebConfigurationManager { 

    [WebGet] 
    [OperationContract] 
    public ICollection<string> GetStrings() { 
     return new string[] { "A", "B", "C" }; 
    } 

} 

この操作をウェブブラウザから実行しようとすると、エラーが発生します。それは正確な型「にSystem.Collectionsではありませんので、

型のパラメータ「可能System.String []」(オペレーション「GetStrings」の、契約「WebConfigurationManager」)をシリアル化できません:私のWCFトレースで見ると、これは私を示してい.Generic.ICollection`1 [System.String] 'はメソッドシグネチャ内にあり、既知の型コレクションにはありません。パラメータをシリアライズするには、ServiceKnownTypeAttributeを使用して、操作の既知の型コレクションに型を追加します。

答えて

2

これは動作するはずです:

[ServiceKnownType(typeof(string[]))] 
[ServiceContract] 
public class WebConfigurationManager { 
    [WebGet] 
    [OperationContract] 
    public ICollection<string> GetStrings() { 
     return new string[] { "A", "B", "C" }; 
    } 
} 
0

アンドリューは正しい方向に私を指摘しました。答えは、[ServiceContract]属性の上に

[ServiceKnownType(typeof(string[]))] 

を追加することです。

関連する問題