WCF WebGet и ICollection <> - PullRequest
       35

WCF WebGet и ICollection <>

2 голосов
/ 16 июля 2009

Я пытаюсь вернуть универсальную коллекцию ICollection из службы REST WCF. Должно ли быть возможно следующее?

[ServiceContract]
public class WebConfigurationManager {

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

}

Когда я пытаюсь выполнить эту операцию из моего веб-браузера, я получаю сообщение об ошибке. Просмотр моего следа WCF показывает мне это:

Невозможно сериализовать параметр типа 'System.String []' (для операции 'GetStrings', контракт 'WebConfigurationManager'), поскольку это не точный тип 'System.Collections.Generic.ICollection`1 [System.String]' в сигнатуре метода и отсутствует в коллекции известных типов. Для сериализации параметра добавьте тип в коллекцию известных типов для операции с использованием ServiceKnownTypeAttribute.

Ответы [ 2 ]

2 голосов
/ 17 июля 2009

Это должно работать:

[ServiceKnownType(typeof(string[]))]
[ServiceContract]
public class WebConfigurationManager {
    [WebGet]
    [OperationContract]
    public ICollection<string> GetStrings() {
        return new string[] { "A", "B", "C" };
    }
}
0 голосов
/ 17 июля 2009

Андрей указал мне в правильном направлении. Ответ должен добавить

[ServiceKnownType(typeof(string[]))]

над атрибутом [ServiceContract].

...