我有一個簡單的服務,如:WCF的DataContractSerializer無法序列化
[ServiceContract]
public interface IService
{
[WebGet(UriTemplate = "/", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
List<DataContracts.MyThing> Get();
}
我datacontract是straightfoward,沒有什麼不尋常有:
[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>
所以我的問題是雙重的:
- 我本地developm爲什麼不服務的命名空間環境?
- 爲什麼它通過將標準路徑附加到標籤內的服務來創建不好的XML?
很明顯,壞的XML節點會破壞任何解析器,所以這對我來說絕對沒用。奇怪的是,這隻發生在特定的服務方法上,所有其他服務方式都正常工作,並且配置方式相同。
編輯:當我使用JSON,一切看起來都不錯,所以我不認爲這是WCF的問題。它必須是一個串行器問題。
這看起來在.NET Framework版本中有所不同。 – 2010-02-28 21:07:14
哦,好點,我在本地運行3.5SP1,讓我檢查服務器。 – FlySwat 2010-02-28 21:08:07
它也運行3.5 SP1 :( – FlySwat 2010-02-28 21:11:07