Как переименовать корень xml в ответе WCF?

Возможный дубликат:
WCF REST: удалить префикс ArrayOf для ответа метода wcf

Я определил простую службу WCF в С# следующим образом:

[ServiceContract]
public interface IAugeService
{
    [OperationContract]
    [WebGet]
    List<Face> DetectedFaces();
}

Я могу создать конечную точку с помощью WebHttpBinding, и большая часть этого работает нормально. Но имя корневого элемента в сгенерированном xml-ответе определяется типом возвращаемого значения, поэтому я получаю что-то вроде этого:

<ArrayOfFace>
    <Face>
        ...
    </Face
    ...
</ArrayOfFace

Мне нужно дать корневому узлу другое имя.

Я попытался изменить объявление метода на это:

...  
[OperationContract]
[WebGet]
[return: MessageParameter(Name="result")]
List<Face> DetectedFaces();
...

...но не помогло :(


person sne11ius    schedule 03.08.2011    source источник
comment
У кого-то уже была такая же проблема: Как я могу контролировать имя общих типов возврата WCF?   -  person Filburt    schedule 03.08.2011
comment
В этой теме нет ничего, что могло бы решить мою проблему.   -  person sne11ius    schedule 03.08.2011


Ответы (1)


Добавьте атрибут Name в свой DataMember. Однако это добавит дополнительный тег.

[DataContract(Name = "FaceList")
public class FaceList
{
...
[DataMember(Name = "Result")]
List<Face> Faces { get; set; }
...
}
person fozylet    schedule 03.08.2011