2009-07-16 7 views
2

Ich versuche, eine generische ICollection von einem REST WCF-Dienst zurückzugeben. Sollte folgendes möglich sein?WCF WebGet und ICollection <>

[ServiceContract] 
public class WebConfigurationManager { 

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

} 

Wenn ich versuche, diesen Vorgang über meinen Webbrowser auszuführen, erhalte ich einen Fehler. dieses Blick durch meine WCF Spur zeigt mir:

kann nicht serialisiert werden Parameter vom Typ ‚System.String []‘ (für den Betrieb ‚GetStrings‘ Vertrag ‚WebConfigurationManager‘), weil sie nicht die genaue Art ‚System.Collections ist .Generic.ICollection "1 [System.String]" in der Methodensignatur und nicht in der bekannten Typenauflistung. Um den Parameter zu serialisieren, fügen Sie den Typ der bekannten Typenauflistung für die Operation hinzu, die ServiceKnownTypeAttribute verwendet.

Antwort

2

sollte diese Arbeit:

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

Andrew mich in die richtige Richtung. Die Antwort lautet:

[ServiceKnownType(typeof(string[]))] 

über dem Attribut [ServiceContract].

Verwandte Themen