【发布时间】:2012-05-01 04:20:09
【问题描述】:
我在返回 Activity 对象数组时遇到如下所示的错误。无法理解哪里出了问题。谁能帮我解决这个问题。
这是错误
命名空间中的结束元素“ActivityTypeId” 'http://schemas.datacontract.org/2004/07/BusinessEntities' 预期。 从命名空间中找到元素 'a:Code' 'http://schemas.datacontract.org/2004/07/BusinessEntities'。 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();
}
WCF服务代码
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 方法的返回类型更改为 List
,而不是返回数组,而是返回列表。进行此更改后,此代码按预期工作。但不确定问题的原因。如果有人对此行为有任何想法,请告诉我。 -
请将您的解决方案添加为答案并将其标记为已接受,以便其他人知道该问题已解决。
标签: wcf