3
我有一个WCF服务,我有类象下面这样:意外的变量名
public class Message
{
[XmlElement(ElementName = "message")]
[DataMember(Name = "message")]
public string message { get; set; }
[XmlElement(ElementName = "MsgID")]
[DataMember(Name = "MsgID")]
public string MsgID{ get; set; }
}
然后我浏览我的服务在浏览器中的XML我得到象下面这样:
<MessageResponse>
<Status>SUCCESS</Status>
<Messages>
<a:Message>
<a:message>msg1</a:message>
<a:MsgID>1</a:MsgID>
</a:Message>
</Messages>
</MessageResponse>
我的服务合同是象下面这样:和一个更为重要的是: MessageDco类是邮件的副本类
[ServiceContract(Namespace="")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class UserLoginProfileService
{
[WebGet(UriTemplate = "/GetMessages?MsgID={MsgID}")]
public MessageResponse GetMessage(Guid MsgID)
{
MessageResponse objMessageResponse = new MessageResponse();
try
{
Message[] objMessage = new MessageFacade().GetMessage(MsgIDs);
if (objUserLoginProfile != null)
{
MessageResponse.Status = Status.Success;
MessageResponse.Messages =Mapper.ToDataContractObjects(objMessage);
}
else
{
objMessageResponse.Status = Status.Success;
}
}
catch (Exception ex)
{
objMessageResponse.Status = Status.Failure;
}
return objMessageResponse;
}
}
public class MessageResponse
{
[XmlElement(ElementName = "Messages")]
[DataMember(Name = "Messages")]
public MessageDco[] Messages { get; set; }
[XmlElement(ElementName = "Status")]
[DataMember(Name = "Status")]
public string Status { get; set; }
}
我的映射类是象下面这样:
public sealed class Mapper
{
public static MessageDco[] ToDataContractObjects(IEnumerable<MessageDco> objMessageDco)
{
if (objMessageDco != null)
{
return objMessageDco.Select(a => ToDataContractObjects(a)).ToArray();
}
else
{
return null;
}
}
}
,如果我们看到“:”被添加到标签。为什么添加?我无法从标签中删除该“a:”。请帮助我如何从标签中删除“a:”。此外,如果您看到MessageResponse类(状态标记)正确,但MessageResponse中的数组列表(即:Message [])错误。
在此先感谢。
感谢您的答复丰富。我编辑了响应XML,这是我从服务中获得的正确XML。我向ServiceContract添加了名称空间(例如:[ServiceContract(Namespace =“”)])但响应是相同的。请告诉我,如果我在我的代码中做了任何错误的事情。 – 2011-12-20 11:52:22