c# - 你调用的对象是空的。在 wcf 服务中

标签 c# wcf nullreferenceexception

我已经创建了一个 wcf 服务和客户端应用程序来与该服务进行通信。当服务向客户端应用程序发送数据时,我的项目工作正常,但在将数据发送回服务时出错,并在服务端出现这样的错误

An exception of type 'System.NullReferenceException' occurred in HostWCF.DLL but was not handled in user code Additional information: Object reference not set to an instance of an object.

这是客户端调用和获取数据到服务器或从服务器获取数据的函数:-

  us = client.GetDataFromServerForTenderMaster(machine);
  cmd.Connection = con;
  SubmitDataCollection sDC = new SubmitDataCollection();
  string sqlcommand = "";
  try
  {
    foreach (HostWCF.TableNameTenderMaster item in sDC.SubmitToTableNameTenderMaster())
    {
      Console.WriteLine(client.State);
      Console.ReadLine();
      do
      {

        sub = client.SubmitDataToServerForTenderMaster(machine, item);
        if (sub == true)
        {
           if (item.DeleteStatus == true)
           {
              DeleteStatus = 1;
           }
           else
           {
                DeleteStatus = 0;
           }
           if (item.Local == true)
           {
            LocalStatus = 1;
           }
           else
           {
            LocalStatus = 0;
           }
           if (item.Global == true)
           {
             GlobalStatus = 1;
           }
           else
           {
             GlobalStatus = 0;
           }
           sqlcommand = "UPDATE [TenderMaster] SET [TenderCode] = " + item.TenderCode
           + " ,[TenderCodeNumber] = '" + item.TenderCodeNumber + "' ,[TenderName] =  
           '" + item.TenderName + "' ,[StartingDate] = '" + item.StartingDate + "' 
           ,[EndingDate] = '" + item.EndingDate + "' ,[ClientName] = '" + 
           item.ClientName + "' ,[Address] = '" + item.Address + "' ,[ContractoreName] 
           = '" + item.ContractoreName + "' ,[WorkName] = '" + item.WorkName + "' 
          ,[WorkOrderNo] = '" + item.WorkOrderNo + "' ,[STno] = '" + item.STno + "' 
          ,[VatNo] = '" + item.VatNo + "' ,[Estimatetime] = '" + item.Estimatetime  
          +"' 
          ,[EstimateAmount] = '" + item.EstimateAmount + "' ,[UserId] = '" + 
          item.UserId + "' ,[Datetime] = '" + item.Datetime + "' ,[Status] = " + 
          item.Status + " ,[LocationID] = '" + item.LocationID + "' ,[Sync_Status] = " 
          + syncStatus  + "  ,[Sync_Datetime] = '" + item.Sync_Datetime + "' ,[Layer] 
          = '" + item.Layer + "',[Dt] = '" + item.Dt + "' ,[Location] = '" + 
          item.Location + "'  ,[Local] = " + LocalStatus + " ,[Global] = " + 
          GlobalStatus + " ,[DeleteStatus] = " + DeleteStatus + " WHERE [TenderCode] = 
          " + item.TenderCode + " and  [LocationID] = '" + item.LocationID + "' and 
          [Layer] ='" + item.Layer + "'";

          cmd.CommandText = sqlcommand;
          con.Open();
          cmd.ExecuteNonQuery();
          con.Close();
          }
        } while (sub == false);

我的功能在服务器端是这样的:-

public bool GetDataFromServerForTenderMaster(string MachineID)

将数据发送到客户端应用程序这工作正常。

public bool SubmitDataToServerForTenderMaster(string MachineID,TableNameTenderMaster tn)

从客户端应用程序发送数据时,它会在该区域出现如下错误。

 [DataContract]
    public class TableNameTenderMaster
    {
        private int _TenderCode;
        private string _TenderCodeNumber;
        private string _TenderName;
        private string _StartingDate;
        private string _EndingDate;
        private string _ClientName;
        private string _Address;
        private string _ContractoreName;
        private string _WorkName;
        private string _WorkOrderNo;
        private string _STno;
        private string _VatNo;
        private string _Estimatetime;
        private string _EstimateAmount;
        private string _UserId;
        private DateTime _Datetime;
        private int _Status;
        private string _LocationID;
        private bool _Sync_Status;
        private DateTime _Sync_Datetime;
        private string _Layer;
        private string _Dt;
        private string _Location;
        private bool _Local;
        private bool _Global;
        private bool _DeleteStatus;
        private bool _UpdateStatus;

        [DataMember]
        public int TenderCode
        {
            get
            {
                return _TenderCode;
            }
            set
            {
                if (value == null)
                {
                    value = 0;
                }
                _TenderCode = value;
            }
        }
        [DataMember]
        public string TenderCodeNumber
        {
            get
            {
                return _TenderCodeNumber;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _TenderCodeNumber = value.Trim();
            }
        }
        [DataMember]
        public string TenderName
        {
            get
            {
                return _TenderName;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _TenderName = value.Trim();
            }
        }
        [DataMember]
        public string StartingDate
        {
            get
            {
                return _StartingDate;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _StartingDate = value.Trim();
            }
        }
        [DataMember]
        public string EndingDate
        {
            get
            {
                return _EndingDate;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _EndingDate = value.Trim();
            }
        }
        [DataMember]
        public string ClientName
        {
            get
            {
                return _ClientName;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _ClientName = value.Trim();
            }
        }
        [DataMember]
        public string Address
        {
            get
            {
                return _Address;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _Address = value.Trim();
            }
        }
        [DataMember]
        public string ContractoreName
        {
            get
            {
                return _ContractoreName;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _ContractoreName = value.Trim();
            }
        }
        [DataMember]
        public string WorkName
        {
            get
            {
                return _WorkName;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _WorkName = value.Trim();
            }
        }
        [DataMember]
        public string WorkOrderNo
        {
            get
            {
                return _WorkOrderNo;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _WorkOrderNo = value.Trim();
            }
        }
        [DataMember]
        public string STno
        {
            get
            {
                return _STno;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _STno = value.Trim();
            }
        }
        [DataMember]
        public string VatNo
        {
            get
            {
                return _VatNo;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _VatNo = value.Trim();
            }
        }
        [DataMember]
        public string Estimatetime
        {
            get
            {
                return _Estimatetime;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _Estimatetime = value.Trim();
            }
        }
        [DataMember]
        public string EstimateAmount
        {
            get
            {
                return _EstimateAmount;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _EstimateAmount = value.Trim();
            }
        }
        [DataMember]
        public string UserId
        {
            get
            {
                return _UserId;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _UserId = value.Trim();
            }
        }
        [DataMember]
        public DateTime Datetime
        {
            get
            {
                return _Datetime;
            }
            set
            {
                _Datetime = value;
            }
        }
        [DataMember]
        public int Status
        {
            get
            {
                return _Status;
            }
            set
            {
                if (value == null)
                {
                    value = 0;
                }
                _Status = value;
            }
        }
        [DataMember]
        public string LocationID
        {
            get
            {
                return _LocationID;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _LocationID = value.Trim();
            }
        }
        [DataMember]
        public bool Sync_Status
        {
            get
            {
                return _Sync_Status;
            }
            set
            {
                _Sync_Status = value;
            }
        }
        [DataMember]
        public DateTime Sync_Datetime
        {
            get
            {
                return _Sync_Datetime;
            }
            set
            {
                _Sync_Datetime = value;
            }
        }
        [DataMember]
        public string Layer
        {

            get
            {
                return _Layer;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _Layer = value.Trim();
            }
        }

        private string _SyncMachineID;
        [DataMember]
        public string SyncMachineID
        {
            get
            {
                return _SyncMachineID;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _SyncMachineID = value.Trim();
            }
        }

        [DataMember]
        public string Dt
        {
            get
            {
                return _Dt;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _Dt = value.Trim();
            }
        }
        [DataMember]
        public string Location
        {
            get
            {
                return _Location;
            }
            set
            {
                if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
                {
                    value = "";
                }
                _Location = value.Trim();
            }
        }
        [DataMember]
        public bool Local
        {
            get
            {
                return _Local;
            }
            set
            {
                _Local = value;
            }
        }
        [DataMember]
        public bool Global
        {
            get
            {
                return _Global;
            }
            set
            {
                _Global = value;
            }
        }
        [DataMember]
        public bool DeleteStatus
        {
            get
            {
                return _DeleteStatus;
            }
            set
            {
                _DeleteStatus = value;
            }
        }
        public bool UpdateStatus
        {
            get
            {
                return _UpdateStatus;
            }
            set
            {
                _UpdateStatus = value;
            }
        }
    }

我做了一些研究,但没有找到解决这个问题的方法。请任何人知道这个问题的解决方案。

最佳答案

尝试改变

if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")

if (string.NullOrEmpty(value))

对于初学者来说。您的原始线路有几个问题:

  • 如果值为空,Trim() 将抛出异常
  • 您对修剪后的字符串进行三项检查,无论如何都会对原始字符串产生相同的结果
  • 你做三项检查,其中一项就足够了

关于c# - 你调用的对象是空的。在 wcf 服务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064583/

相关文章:

c# - 使用 OleDbParameter 在 Access 中插入日期/时间值

c# - 将变量传递给 SSIS 中的项目参数

c# - 从另一方收到不安全或不正确的安全故障

c# - WCF DataContracts 中的 INotifyPropertyChanged

c# - 强制方法不返回 null

c# - (来自 HRESULT : 0x80070005 (E_ACCESSDENIED)) 的异常

c# - 将公共(public)属性用于内部和公共(public)使用还是分开使用?

c# - 具有单字节序列属性的 complexType 服务,Bug?

java - 调用MySql数据库时出现空指针异常

c# - 关于 NullReferenceException 的困惑