.net 当实际服务返回数据时,为什么WebService会返回null?
我有一个网络服务(我无法控制),我必须与之交谈。我还有一个数据包嗅探器,Web服务的开发人员没有撒谎。我在正确的字段中看到数据 他们实际上正在发回我要求的所有数据。但是从WSDL文件自动生成的web服务代码将“null”作为一个值 更新:为了澄清,返回的对象不为空。对象中的元素为空。我不知道这是否对任何人有帮助。我完全被难住了 我使用他们的WSDL文件来生成我的Web引用。我用WSDL文件声明的数据类型检查了我的数据类型。我使用下面列出的代码来执行调用:.net 当实际服务返回数据时,为什么WebService会返回null?,.net,xml,web-services,soap,.net,Xml,Web Services,Soap,我有一个网络服务(我无法控制),我必须与之交谈。我还有一个数据包嗅探器,Web服务的开发人员没有撒谎。我在正确的字段中看到数据 他们实际上正在发回我要求的所有数据。但是从WSDL文件自动生成的web服务代码将“null”作为一个值 更新:为了澄清,返回的对象不为空。对象中的元素为空。我不知道这是否对任何人有帮助。我完全被难住了 我使用他们的WSDL文件来生成我的Web引用。我用WSDL文件声明的数据类型检查了我的数据类型。我使用下面列出的代码来执行调用: DT_MaterialMaster_Lo
DT_MaterialMaster_LookupRequest req = new DT_MaterialMaster_LookupRequest();
req.MaterialNumber = "101*";
req.DocumentNo = "";
req.Description = "Pipe*";
req.Plant = "0000";
MI_MaterialMaster_Lookup_OBService srv = new MI_MaterialMaster_Lookup_OBService();
DT_MaterialMaster_Response resp =
srv.MI_MaterialMaster_Lookup_OB(new DT_MaterialMaster_LookupRequest[] { req });
// Note that the response here is ALWAYS null!!
Console.WriteLine(resp.Status);
resp对象是实际对象。它是正确生成的。但是,Status和MaterialData字段始终为空
当我调用web服务时,我在线路上放置了一个数据包嗅探器,我可以看到我已经发送了以下内容(为了我自己的理智,换行符和缩进):
101*
烟斗*
0000
他们返回的响应似乎是有效的响应(为了我自己的理智,换行符和缩进):
找不到行
状态显示它实际收到了数据。。。但是resp.Status和resp.MaterialData字段始终为空。我做错了什么
更新:
WSDL文件定义为:
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:p1="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch" name="MI_MaterialMaster_Lookup_OB" targetNamespace="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch"
targetNamespace="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MT_MaterialMaster_Response" type="p1:DT_MaterialMaster_Response" />
<xsd:element name="MT_MaterialMaster_Lookup" type="p1:DT_MaterialMaster_Lookup" />
<xsd:complexType name="DT_MaterialMaster_Response">
<xsd:sequence>
<xsd:element name="Status" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b040af11df99e300145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="unbounded" name="MaterialData">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa040a511df843700145eccb24e</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MaterialNumber" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa140a511df848500145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Description" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa240a511df95bf00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="DocumentNo" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa340a511dfb23700145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="UOM" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">3b5f14c040a611df9fbe00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Hierarchy" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa440a511dfc65b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Plant" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b140af11dfb78e00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Procurement" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b240af11dfb87b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DT_MaterialMaster_Lookup">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Request">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa040a511df843700145eccb24e</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="MaterialNumber" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa140a511df848500145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Description" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa240a511df95bf00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="DocumentNo" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa340a511dfb23700145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Plant" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa440a511dfc65b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="MT_MaterialMaster_Lookup">
<wsdl:part name="MT_MaterialMaster_Lookup" element="p1:MT_MaterialMaster_Lookup" />
</wsdl:message>
<wsdl:message name="MT_MaterialMaster_Response">
<wsdl:part name="MT_MaterialMaster_Response" element="p1:MT_MaterialMaster_Response" />
</wsdl:message>
<wsdl:portType name="MI_MaterialMaster_Lookup_OB">
<wsdl:operation name="MI_MaterialMaster_Lookup_OB">
<wsdl:input message="p1:MT_MaterialMaster_Lookup" />
<wsdl:output message="p1:MT_MaterialMaster_Response" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MI_MaterialMaster_Lookup_OBBinding" type="p1:MI_MaterialMaster_Lookup_OB">
<binding transport="http://schemas.xmlsoap.org/soap/http" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="MI_MaterialMaster_Lookup_OB">
<operation soapAction="http://SomeCompany.com/xi/WebService/soap1.1" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<body use="literal" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
<wsdl:output>
<body use="literal" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MI_MaterialMaster_Lookup_OBService">
<wsdl:port name="MI_MaterialMaster_Lookup_OBPort" binding="p1:MI_MaterialMaster_Lookup_OBBinding">
<address location="http://bxdwas.MyCompany.com/XISOAPAdapter/MessageServlet?channel=:SOAP_SND_Material_Lookup" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
d48d03b040af11df99e300145eccb24e
64908aa040a511df843700145eccb24e
64908aa140a511df848500145eccb24e
64908aa240a511df95bf00145eccb24e
64908AA340A511DFB2370145ECCB24E
3b5f14c040a611df9fbe00145eccb24e
64908aa440a511dfc65b00145eccb24e
d48d03b140af11dfb78e00145eccb24e
d48d03b240af11dfb87b00145eccb24e
64908aa040a511df843700145eccb24e
64908aa140a511df848500145eccb24e
64908aa240a511df95bf00145eccb24e
64908AA340A511DFB2370145ECCB24E
64908aa440a511dfc65b00145eccb24e
您必须为我发布WSDL,但“Web服务返回Null”几乎总是意味着存在关于XML名称空间的争议-该服务在一个名称空间中向您发送数据,而.NET需要另一个名称空间
在本例中,请注意,大多数响应都位于默认名称空间中,即使包装器元素位于
http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch
命名空间。确保您的服务引用是最新的。当服务WSDL更改但引用未更新时,我们就会遇到这种情况。好主意。。。我不相信你的回答,因为那是一个好机会。然而,我能够伪造一个数据包,我伪造了他们的数据包,并在各地更改了名称空间。这似乎不是问题所在。它没有崩溃,对象本身也不是空的。对象中的项为空。@Jerry:我将在午餐时尝试更详细地了解这一点,但我必须说WSDL没有显示通常表示混合名称空间的符号。同时,如果您可以查看Reference.cs文件,查看元素上放置了哪些名称空间,并与XML进行比较,那将很好。(你会发誓我让他们寄政府机密)。终于得到了,你不知道吗,这是不同的。显然,每个项现在都是项的数组,而不是单个项,因此为什么它是空的。NET无法确定类型,因此将其保留为空。
<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>
<SOAP:Header />
<SOAP:Body>
<n0:MT_MaterialMaster_Response
xmlns:n0='http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch'
xmlns:prx='urn:SomeCompany.com:proxy:BRD:/1SAI/TAS4FE14A2DE960D61219AE:701:2009/02/10'>
<Response>
<Status>No Rows Found</Status>
<MaterialData />
</Response>
</n0:MT_MaterialMaster_Response>
</SOAP:Body>
</SOAP:Envelope>
<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:p1="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch" name="MI_MaterialMaster_Lookup_OB" targetNamespace="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xsd:schema xmlns="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch"
targetNamespace="http://MyCompany.com/SomeCompany/mm/MaterialMasterSearch"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MT_MaterialMaster_Response" type="p1:DT_MaterialMaster_Response" />
<xsd:element name="MT_MaterialMaster_Lookup" type="p1:DT_MaterialMaster_Lookup" />
<xsd:complexType name="DT_MaterialMaster_Response">
<xsd:sequence>
<xsd:element name="Status" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b040af11df99e300145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element maxOccurs="unbounded" name="MaterialData">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa040a511df843700145eccb24e</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MaterialNumber" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa140a511df848500145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Description" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa240a511df95bf00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="DocumentNo" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa340a511dfb23700145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="UOM" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">3b5f14c040a611df9fbe00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Hierarchy" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa440a511dfc65b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Plant" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b140af11dfb78e00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Procurement" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">d48d03b240af11dfb87b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DT_MaterialMaster_Lookup">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Request">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa040a511df843700145eccb24e</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="MaterialNumber" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa140a511df848500145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Description" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa240a511df95bf00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="DocumentNo" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa340a511dfb23700145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
<xsd:element minOccurs="0" name="Plant" type="xsd:string">
<xsd:annotation>
<xsd:appinfo source="http://SomeCompany.com/xi/TextID">64908aa440a511dfc65b00145eccb24e</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="MT_MaterialMaster_Lookup">
<wsdl:part name="MT_MaterialMaster_Lookup" element="p1:MT_MaterialMaster_Lookup" />
</wsdl:message>
<wsdl:message name="MT_MaterialMaster_Response">
<wsdl:part name="MT_MaterialMaster_Response" element="p1:MT_MaterialMaster_Response" />
</wsdl:message>
<wsdl:portType name="MI_MaterialMaster_Lookup_OB">
<wsdl:operation name="MI_MaterialMaster_Lookup_OB">
<wsdl:input message="p1:MT_MaterialMaster_Lookup" />
<wsdl:output message="p1:MT_MaterialMaster_Response" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MI_MaterialMaster_Lookup_OBBinding" type="p1:MI_MaterialMaster_Lookup_OB">
<binding transport="http://schemas.xmlsoap.org/soap/http" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="MI_MaterialMaster_Lookup_OB">
<operation soapAction="http://SomeCompany.com/xi/WebService/soap1.1" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<body use="literal" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
<wsdl:output>
<body use="literal" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MI_MaterialMaster_Lookup_OBService">
<wsdl:port name="MI_MaterialMaster_Lookup_OBPort" binding="p1:MI_MaterialMaster_Lookup_OBBinding">
<address location="http://bxdwas.MyCompany.com/XISOAPAdapter/MessageServlet?channel=:SOAP_SND_Material_Lookup" xmlns="http://schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>