根据客户提供的wsdl文件,使用wsdl.exe生成代理类,在实例化时直接提示错误。异常信息如下:
捕捉到 System.InvalidOperationException
_HResult=-2146233079
_message=无法生成临时类(result=1)。
error CS0029: 无法将类型“DT_ERPDATA_QUERY_RESPResultsMainTableTableFields”隐式转换为“DT_ERPDATA_QUERY_RESPResultsMainTableTableFields[]”
HResult=-2146233079
IsTransient=false
Message=无法生成临时类(result=1)。
error CS0029: 无法将类型“DT_ERPDATA_QUERY_RESPResultsMainTableTableFields”隐式转换为“DT_ERPDATA_QUERY_RESPResultsMainTableTableFields[]”
Source=System.Xml
StackTrace:
在 System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
在 System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
在 System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
在 System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type)
在 System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type)
在 System.Web.Services.Protocols.SoapClientType..ctor(Type type)
在 System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()
在 SI_ERPDATA_QUERY_OUTService..ctor() 位置 f:\MyCodes\MyTest\MyTest\TestInterface.cs:行号 33
在 MyTest.TestInterface.Main(String[] args) 位置 f:\MyCodes\MyTest\MyTest\TestInterface.cs:行号 44
InnerException:
在网上查了下,没有得到满意的结果。
直接修改代理类,最后倒是可以不报错,也能请求到数据,但返回的结果跟直接通过http请求接口地址返回的不一样了
代理类中,将返回结果对象中的DT_ERPDATA_QUERY_RESPResultsMainTableTableFields[][]修改为了DT_ERPDATA_QUERY_RESPResultsMainTableTableFields[]
这是?返回的数据格式是DataTable?
这个是根据wsdl生成的代理类。还没到返回呢~
SI_ERPDATA_QUERY_OUTService testService = new SI_ERPDATA_QUERY_OUTService();
SI_ERPDATA_QUERY_OUTService 是生成的代理类
之前用这种方式做过其他接口没啥问题呢。
DT_ERPDATA_QUERY_RESPResultsMainTableTableFields[]是一个对象数组,DT_ERPDATA_QUERY_RESPResultsMainTableTableFields,这个又是一个什么对象,实体类吗
是的,根据wsdl自动生成出来的。
修改代理类后解决。