你调用的对象是空的。在wcf服务

时间:2013-11-19 06:21:35

标签: c# wcf nullreferenceexception

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

  

HostWCF.DLL中发生了'System.NullReferenceException'类型的异常,但未在用户代码中处理。附加信息:对象引用未设置为对象的实例。

这是客户端调用服务器或从服务器获取数据的功能: -

  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;
            }
        }
    }

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

1 个答案:

答案 0 :(得分:2)

尝试更改

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

if (string.NullOrEmpty(value))

首发。您的原始行有几个问题:

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