我对尝试理解服务引用和 Web服务引用的概念时发生的一件事感到有点好奇。
我做的是什么?
在我的项目中,我添加了web service
作为服务参考,并尝试通过使用客户端来运行我的脚本。
但是在获得结果时,它会抛出异常,如下图所示:
我试图找出原因,但无法得到正确答案。 我有以下代码用于生成的对象。
[
ComVisible(false),
Serializable,
SoapTypeAttribute("RecordList", "http://www.someadd.com/dev/ns/SOF/2.0"),
XmlType(TypeName="RecordList", Namespace="http://www.someadd.com/dev/ns/SOF/2.0")
]
public class MyRecordListWrapper
{
private IxRecordList recordList = null;
private const string XMLW3CSchema = "http://www.w3.org/2001/XMLSchema";
[SoapElement("Headers")]
public Header[] Headers = null;
[SoapElement("Records")]
public Record[] Records = null;
// some methods to work on intialization
public SmRecordListWrapper(ref IxRecordList p_RecordList)
{
recordList = p_RecordList;// record list initialization
Headers = CreateWrapperHeaders(); // will return header class object
Records = CreateWrapperRecords(); // will return record object
}
}
有谁能告诉我为什么会出现这个错误?
将引用添加为Web服务引用
当我添加与web reference
相同的引用时,程序没有显示任何错误并成功运行?
那么有谁能告诉我使用服务引用和Web服务引用使用相同的代码有什么区别? 哪种方法可以参考?
希望我能得到更多描述的答案,使事情易于理解。
提前致谢。
答案 0 :(得分:1)
添加Web引用,visual studio使用xsd.exe从服务元数据生成类。这使用了引擎盖下的XmlSerializer。
添加服务引用,visual studio使用svcutil.exe从元数据生成类。这使用了DataContractSerializer。
两个独立的工具,两个结果。对于一般信息,DataContractSerializer在从元数据生成类时是a lot less forgiving。