當我嘗試從我的服務序列化數據到客戶端時,在我的WCF服務中出現以下錯誤。我知道爲什麼的錯誤正在發生,但我不知道如何來解決它。無法序列化wcf服務中的空整型字段
ExceptionType: CommunicationException - Communication error in either the service or client application
Error: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:GetRyderVehiclesResult . The InnerException message was 'ValueType 'System.Int32' cannot be null.'. Please see InnerException for more details.
有一個空的整數屬性,我需要序列化。它可以在我的服務上爲空,並且處理得很好,但是當我查看客戶端上生成的代理時,它是而不是可以爲空。
在配置我的wcf服務引用爲空時,如何獲取客戶端上的屬性?
這是我在服務器端的屬性。
private int? vehicleOdometer;
[DataMember(Name = "VehicleOdometer")]
public int? VehicleOdometer
{
get { return vehicleOdometer; }
set { vehicleOdometer = value; }
}
這是我的客戶端生成的屬性。注意它是如何的而不是可以爲空。
[System.Runtime.Serialization.DataMemberAttribute()]
public int VehicleOdometer {
get { return this.VehicleOdometerField; }
set {
if ((this.VehicleOdometerField.Equals(value) != true)) {
this.VehicleOdometerField = value;
this.RaisePropertyChanged("VehicleOdometer");
}
}
}
難道這是因爲該屬性最初是int並且已被更改爲可爲空?您可以嘗試重建您的WCF服務並重新生成代理以查看是否修復它。 – DeanOC
更新'服務參考' – Silvermind
您是否嘗試過在數據成員上設置「IsRequired = false」? I.e.,[DataMember(IsRequired = false)]'? – Tim