C# System.ArgumentNullException:';值可以';参数名称不能为空:source';

C# System.ArgumentNullException:';值可以';参数名称不能为空:source';,c#,exception,C#,Exception,我有一个程序,它连接到一个站点,并使用soap api获取订单列表。但我有一个非常奇怪的问题。当我尝试获取一天中没有订单的订单,然后尝试获取一天的订单列表时,我得到了这个错误。但奇怪的是,如果把一个断点放在我得到错误的地方,然后一步一步地评估程序,我就不会得到任何错误。怎么会这样呢。赫尔是密码 https://api.n11.com/ws/OrderService.wsdl using n11.Deneme.Forms.com.n11.api; using System; using Syst

我有一个程序,它连接到一个站点,并使用soap api获取订单列表。但我有一个非常奇怪的问题。当我尝试获取一天中没有订单的订单,然后尝试获取一天的订单列表时,我得到了这个错误。但奇怪的是,如果把一个断点放在我得到错误的地方,然后一步一步地评估程序,我就不会得到任何错误。怎么会这样呢。赫尔是密码

https://api.n11.com/ws/OrderService.wsdl

using n11.Deneme.Forms.com.n11.api;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace n11.Deneme.Forms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string strStartDate = "18/01/2020";
            string strEndDate = "18/01/2020";

            long totalCountValue = 50;
            int currentPageValue = 0;
            int pageCountValue = 1;
            int pageSizeValue = 50;

            Authentication auth = new Authentication();
            auth.appKey = "b891a6b9-cb97-4a7e-9ffb-f7b1e2a593e8";
            auth.appSecret = "pHCjYYadxwTG64Ej";

            OrderSearchPeriod orderSearchPeriod = new OrderSearchPeriod();
            orderSearchPeriod.startDate = strStartDate;
            orderSearchPeriod.endDate = strEndDate;

            OrderDataListRequest orderDataListRequest = new OrderDataListRequest();
            //orderDataListRequest.status = "1";
            orderDataListRequest.period = orderSearchPeriod;
            //orderDataListRequest.orderNumber = "209524598478";

            PagingData pagingData = new PagingData();
            pagingData.currentPage = currentPageValue;
            pagingData.pageCount = pageCountValue;
            pagingData.pageSize = pageSizeValue;
            pagingData.totalCount = totalCountValue;

            DetailedOrderListRequest request = new DetailedOrderListRequest();
            request.auth = auth;
            request.pagingData = pagingData;
            request.searchData = orderDataListRequest;

            OrderServicePortService port = new OrderServicePortService();
            DetailedOrderListResponse response = port.DetailedOrderList(request);
            List<DetailedOrderData> orderList = response.orderList.ToList();

            foreach (var order in orderList)
            {
                MessageBox.Show(order.totalAmount.ToString() + " - " + order.orderNumber + " - " + order.citizenshipId + " - " + order.createDate);

                long orderIdValue = order.id;

                OrderDataRequest orderDataRequest = new OrderDataRequest();
                orderDataRequest.id = orderIdValue;

                OrderDetailRequest orderdetailrequest = new OrderDetailRequest();
                orderdetailrequest.auth = auth;
                orderdetailrequest.orderRequest = orderDataRequest;


                OrderServicePortService port1 = new OrderServicePortService();
                OrderDetailResponse orderDetailResponse = port1.OrderDetail(orderdetailrequest);
                OrderDetailData orderDetail = orderDetailResponse.orderDetail;

                MessageBox.Show(orderDetail.orderNumber);

                List<OrderSearchData> orderItemList = orderDetail.itemList.ToList();

                foreach (var item in orderItemList)
                {

                    MessageBox.Show(item.shipmentInfo.campaignNumber);

                }


            }

        }



    }
}       
https://api.n11.com/ws/OrderService.wsdl
使用n11.Deneme.Forms.com.n11.api;
使用制度;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
命名空间n11.Deneme.Forms
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
字符串strStartDate=“18/01/2020”;
字符串强度=“18/01/2020”;
长totalCountValue=50;
int currentPageValue=0;
int pageCountValue=1;
int pageSizeValue=50;
Authentication auth=新身份验证();
auth.appKey=“b891a6b9-cb97-4a7e-9ffb-f7b1e2a593e8”;
auth.appSecret=“pHCjYYadxwTG64Ej”;
OrderSearchPeriod OrderSearchPeriod=新的OrderSearchPeriod();
orderSearchPeriod.startDate=strStartDate;
orderSearchPeriod.endDate=StrengedDate;
OrderDataListRequest OrderDataListRequest=新OrderDataListRequest();
//orderDataListRequest.status=“1”;
orderDataListRequest.period=orderSearchPeriod;
//orderDataListRequest.orderNumber=“209524598478”;
PagingData PagingData=新的PagingData();
pagingData.currentPage=currentPageValue;
pagingData.pageCount=pageCountValue;
pagingData.pageSize=pageSizeValue;
pagingData.totalCount=totalCountValue;
DetailedOrderListRequest=新的DetailedOrderListRequest();
request.auth=auth;
request.pagingData=分页数据;
request.searchData=orderDataListRequest;
OrderServicePortService端口=新的OrderServicePortService();
DetailedOrderResponse响应=端口。DetailedOrderList(请求);
List orderList=response.orderList.ToList();
foreach(订单列表中的变量顺序)
{
MessageBox.Show(order.totalAmount.ToString()+“-”+order.orderNumber+“-”+order.citizenshipId+“-”+order.createDate);
long orderIdValue=order.id;
OrderDataRequest OrderDataRequest=新OrderDataRequest();
orderDataRequest.id=orderIdValue;
OrderDetailRequest OrderDetailRequest=新的OrderDetailRequest();
orderdetailrequest.auth=auth;
orderdetailrequest.orderRequest=orderDataRequest;
OrderServicePortService port1=新的OrderServicePortService();
OrderDetailResponse OrderDetailResponse=port1.OrderDetail(orderdetailrequest);
OrderDetailData orderDetail=orderDetailResponse.orderDetail;
Show(orderDetail.orderNumber);
List orderItemList=orderDetail.itemList.ToList();
foreach(orderItemList中的变量项)
{
MessageBox.Show(item.shipmentInfo.activitynumber);
}
}
}
}
}       

如果您在线路上遇到错误:

List orderList=response.orderList.ToList()//我在这条线上发现了错误
然后要做的事情是查看
response.orderList
如何获取值。特别是,它是否对线程、任务、计时器、外部事件或其他类似的东西做了一些事情——这可能意味着它在从
DetailedOrderList
初始返回后不久就会被填充,这可以解释为什么在调试和逐步执行时它会工作(为事情添加了关键延迟)

您也可以简单地执行以下操作:

var tmp=response.orderList;
如果(tmp==null)抛出新的InvalidOperationException(
“嘿,response.orderList为空!这不好!”;
List orderList=tmp.ToList();
返回订单列表;
这将非常清楚和明确地表明这就是正在发生的事情。如果您没有得到这个异常,但是得到了其他一些异常,那么:需要更多的调试

if(response.orderList==null)
if(response.orderList == null)
            {
                var temp = button1_Click.PerformClick();
                return temp;           
            }
            else
            {
                List<DetailedOrderData> orderList = response.orderList.ToList();

                return orderList;
            }        
{ var temp=button1_Click.PerformClick(); 返回温度; } 其他的 { List orderList=response.orderList.ToList(); 返回订单列表; }
现在我得到了这个异常,那么我需要延迟吗?这就是你的意思吗?@devrimderi不,现在你需要找出为什么它最初是
null
;我不能告诉你那里发生了什么:只有你有详细的rderlist的代码;添加任意延迟是一个可怕的黑客行为,它只是在路上踢了一脚——它没有解决实际问题我无法理解发生了什么,因为当我跟踪它时,它没有发生。所以,如果我一步一步地求值,我得到的订单数为零,但如果我没有,我得到的是零,所以我真的不知道该怎么做do@devrimderi您需要了解
.orderList
如何/何时获得赋值;然后从那里向后工作-如何调用代码-等等。我无法帮助您,因为我看不到这些部件的代码。first startdate=18.01.2020 enddate=18.01.2020,然后在我调用将日期更改为17.01.2020后,您只能通过执行这些操作来获得此错误,您可以