我在返回Activity對象數組時遇到下面顯示的錯誤。無法理解事情會出錯的地方。可以幫助我解決這個問題。從WCF服務返回對象時的反序列化錯誤
以下是錯誤
結束元素從命名空間 'ActivityTypeId' 'http://schemas.datacontract.org/2004/07/BusinessEntities' 預期。 從命名空間 'http://schemas.datacontract.org/2004/07/BusinessEntities'發現元素'a:代碼'。行1, 位置450
UI相關代碼:
protected void Page_Load(object sender, EventArgs e)
{
TimeSheetManagementServiceClient serviceClient = new TimeSheetManagementServiceClient("WSHttpBinding_ITimeSheetManagementService");
Activity[] activities=serviceClient.GetActivities();
GridView1.DataSource = activities;
GridView1.DataBind();
}
WCFService代碼
public class TimeSheetManagementService:ITimeSheetManagementService
{
public BusinessEntities.Activity[] GetActivities()
{
TimeSheetManagementDataController controller= new TimeSheetManagementDataController();
var activities = controller.GetActivities().Select(activity => new BusinessEntities.Activity()
{
Code = activity.Code,
Description = activity.Description,
Status =
(EntityStatus)
Enum.Parse(typeof(EntityStatus), ((activity.Status==true) ? 0 : 1).ToString()),
ActivityTypeId = new BusinessEntities.ActivityType()
{
Code=activity.ActivityType.Code,
Description = activity.ActivityType.Description,
Name = activity.ActivityType.Name
}
});
return activities.ToArray();
}
}
服務合同
[ServiceContract]
interface ITimeSheetManagementService
{
[OperationContract]
Activity[] GetActivities();
}
數據合同
[DataContract]
public class Activity
{
[DataMember]
public string Code { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public EntityStatus Status { get; set; }
[DataMember]
public ActivityType ActivityTypeId { get; set; }
}
[DataContract]
public enum EntityStatus
{
[EnumMember]
Active=0,
[EnumMember]
Inactive=1
}
[DataContract]
public class ActivityType
{
[DataMember]
public string Code { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
有些我是如何找到解決這個問題,返回GetActivities方法的類型改爲列出和,而不是返回數組,我returing名單。做這個改變後,這段代碼按預期工作。但不知道問題的原因。如果有人對此行爲有任何想法,請告訴我。 –
sameer
請將您的解決方案作爲答案添加,並將其標記爲已接受,以便其他人知道已解決此問題。 – lockstock