【发布时间】:2015-07-07 07:42:13
【问题描述】:
我在 IIS 服务器上有一个 wcf restful 服务。
我做了一些API,可以称为发送xml或json。
我已经创建了我的 C# 类,然后我正在对其进行测试。 JSON 是完美的,但 XML 请求仍然存在一些问题。
我想用帖子发送 xml,这是我发送的 xml:
<?xml version="1.0" encoding="utf-8" ?>
<SetClientiXML
xmlns="http://tempuri.org/">
<dati>
<ArrayOfWrapClienti
xmlns="http://schemas.datacontract.org/2004/07/MultipayOnline"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<WrapClienti>
<CODRETE>0018</CODRETE>
<CODICE>20685</CODICE>
<NOME>A.T.E.R. Azienda Territoriale</NOME>
<INDIRIZZO>PIAZZA POZZA</INDIRIZZO>
<CITTA>Verona</CITTA>
<CAP>37123</CAP>
<PROV>VR</PROV>
<CODICEFISCALE>00223640236</CODICEFISCALE>
<PIVA>223640236</PIVA>
<EMAIL/>
<ESPOSIZ_CONTABILE>937,02</ESPOSIZ_CONTABILE>
<STATO>FALSE</STATO>
</WrapClienti>
</ArrayOfWrapClienti>
</dati>
<retista>3303903</retista>
<hashedString>oklkokokokok</hashedString>
</SetClientiXML>
wcf 读得很好“retista”和“hashedString”,但“dati”是空的(0 个元素),而我希望它有我发送的“wrapClienti”对象。 这是我的 API 原型:
[OperationContract]
[WebInvoke(UriTemplate = "SetClienti.xml", Method = "POST", BodyStyle=WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Xml)]
GenericResponse SetClientiXML(List<WrapClienti> dati, string retista, string hashedString);
所以,问题是 List 是空的.. 为什么?如何编写 xml 以使列表可读? 罢工> 问我是否可以提供更多详细信息。
更新:更奇怪!
有了这个xml:
<?xml version="1.0" encoding="utf-8" ?><SetClientiXML xmlns="http://tempuri.org/">
<dati>
<WrapClienti xmlns="http://schemas.datacontract.org/2004/07/MultipayOnline" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<CODRETE>0018</CODRETE>
<CODICE>20685</CODICE>
<NOME>A.T.E.R. Azienda Territoriale</NOME>
<INDIRIZZO>PIAZZA POZZA</INDIRIZZO>
<CITTA>Verona</CITTA>
<CAP>37123</CAP>
<PROV>VR</PROV>
<CODICEFISCALE>00223640236</CODICEFISCALE>
<PIVA>223640236</PIVA>
<EMAIL/>
<ESPOSIZ_CONTABILE>937,02</ESPOSIZ_CONTABILE>
<STATO>FALSE</STATO>
</WrapClienti>
</dati>
<retista>3303903</retista>
<hashedString>oklkokokokok</hashedString>
</SetClientiXML>
wcf 读取了 List 的一些属性,而其他.. 都是 nul!!!
我的 WrapClienti 我有很多属性。其中两个是:
private string p_CAP { get; set; }
public string CAP
{
get
{
if (model == null)
return p_CAP.ToSafeString();
else
return this.model.CAP.ToSafeString();
}
set { p_CAP = value; }
}
private string p_PROV { get; set; }
public string PROV
{
get
{
if (model == null)
return p_PROV.ToSafeString();
else
return this.model.PROV.ToSafeString();
}
set { p_PROV = value; }
}
问题是,上面的xml和两个set方法上有两个断点,只有PROV的集合被调用,CAP的那个,没有!!!为什么?现在我真的快疯了……为什么会有这种行为??
【问题讨论】:
-
你的课程不是我需要的解决方案。请好好学习wcf。
-
您要我做些小改动还是可以做?
-
我不明白你的意思..让我看看!
-
@jdweng 感谢您的支持,但是,正如您所见,解决方案与您的想法不同。