我创建了一个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;
}
}
}
我做过一些研究,但没有得到解决这个问题的方法。请有人知道这个问题的解决方案。
答案 0 :(得分:2)
尝试更改
if (value.Trim() == null || value.Trim() == string.Empty || value.Trim() == "")
到
if (string.NullOrEmpty(value))
首发。您的原始行有几个问题: