【问题标题】:WSDL element is null?WSDL 元素为空?
【发布时间】:2013-04-30 08:05:24
【问题描述】:

我有一个 WSDL 文档,其中包含上述元素。

  <s:element name="NewPortalOrder">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="OrderType" type="tns:CardSalesType" />
        <s:element minOccurs="1" maxOccurs="1" name="Customer" type="tns:PortalCustomerContainer" />
        <s:element minOccurs="1" maxOccurs="1" name="InvoiceAddress" type="tns:AddressContainer" />
        <s:element minOccurs="1" maxOccurs="1" name="DeliveryAddress" type="tns:AddressContainer" />
        <s:element minOccurs="0" maxOccurs="1" name="Cards" type="tns:ArrayOfPortalCardContainer" />
      </s:sequence>
    </s:complexType>
  </s:element>

我将 WSDL 文件作为 ServiceReference 添加到解决方案中。

在服务器端

  WS.NewPortalOrderRequest order = new WS.NewPortalOrderRequest();

  order.InvoiceAddress.AddressLine1 = txtAddress.Text;
  order.InvoiceAddress.AddressLine2 = txtAddress2.Text;

order.InvoiceAddress.AddressLine1 = txtAddress.Text; 行我收到Object reference not set to an instance of an object. 错误。

当我看到order.InvoiceAddress 时,我发现它是空的。为什么我会收到此错误?我该如何解决?

【问题讨论】:

  • 你是如何创建order.InvoiceAdress的?可以展示完整的代码吗?
  • 我把它添加到@Tim的问题中
  • NullReferenceException 的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。

标签: c# asp.net web-services wsdl nullreferenceexception


【解决方案1】:

您很可能需要在NewPortalOrderRequest 中创建InvoiceAddress 的实例,如下所示:

WS.NewPortalOrderRequest order = new WS.NewPortalOrderRequest();

order.InvoiceAddress = new WS.InvoiceAddress();

// Now you can assign values to InvoiceAddress' property:
order.InvoiceAddress.AddressLine1 = txtAddress.Text;
order.InvoiceAddress.AddressLine2 = txtAddress2.Text;

您可能需要根据 WSDL 执行 order.InvoiceAddress = new WS.AddressContainer(),但我不能 100% 确定这一点。

【讨论】:

  • 当我做 order.InvoiceAddress = new WS.AddressContainer();它工作正常。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2016-10-21
相关资源
最近更新 更多