gpt4 book ai didi

c# - WCF 服务响应中的意外标记名称

转载 作者:行者123 更新时间:2023-11-30 18:01:55 24 4
gpt4 key购买 nike

我有一个 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>

我的服务契约(Contract)如下:还有一件更重要的事情是:MessageDco 类是 Message 类的副本

[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:”。请帮助我如何从标签中删除“a:”。此外,如果您看到 MessageResponse 类(状态标记)是正确的,但是 MessageResponse 中的数组列表(即 Message[])是错误的。

提前致谢。

最佳答案

a 是为您的元素生成的命名空间。

对于 DataContractSerializer,您可以使用 ServiceContractAttribute 删除服务定义中类型的命名空间,如下所示:

[ServiceContract(Namespace="")] 

关于c# - WCF 服务响应中的意外标记名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com