У меня есть прямой сервис, такой как:
[ServiceContract]
public interface IService
{
[WebGet(UriTemplate = "/", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
List<DataContracts.MyThing> Get();
}
Мой сбор данных прямой, ничего необычного там нет:
[DataContract]
public class MyThing
{
[DataMember]
public string ID { get; set;}
}
Я использую WebServiceHostFactory вместо ручной привязки.
Когда я запускаю это на IIS 5.1 (Windows XP, моя локальная среда разработки), я получаю следующее сообщение:
<ArrayOfMyThing>
<MyThing></MyThing>
</ArrayOfMyThing>
Однако, когда я отбрасываю точно такой же код на IIS 6.0 впроизводственная коробка, я получаю ответ вроде:
<ArrayOfMyThing
xmlns="http://schemas.datacontract.org/2004/07/My.NameSpace.DataContracts"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"http://my.website.com/services/>
</ArrayOfMyThing>
Итак, мой вопрос двоякий:
- Почему он не обслуживает пространства имен в моей локальной среде разработки?
- Почему он создает плохой XML, добавляя базовый путь к службе внутри тега?
Очевидно, что плохой узел XML нарушает работу любого парсера, так что это абсолютно бесполезно для меня.Как ни странно, это происходит только для этого конкретного метода обслуживания, все остальные работают нормально и настроены одинаково.
РЕДАКТИРОВАТЬ: Когда я использую JSON, все выглядит хорошо, поэтому я не думаю, что этоэто проблема с WCF.Это должна быть проблема с сериализатором.