C# WCF服务响应中出现意外的标记名

C# WCF服务响应中出现意外的标记名,c#,asp.net,wcf,C#,Asp.net,Wcf,我有wcf服务,我的课程如下: public class Message { [XmlElement(ElementName = "message")] [DataMember(Name = "message")] public string message { get; set; } [XmlElement(ElementName = "MsgID")] [DataMember(Name = "MsgID")] public string Ms

我有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; }
}
<MessageResponse>
    <Status>SUCCESS</Status>
    <Messages>
       <a:Message>
         <a:message>msg1</a:message>
         <a:MsgID>1</a:MsgID>
       </a:Message>
    </Messages>
</MessageResponse>
public sealed class Mapper
    {
     public static MessageDco[] ToDataContractObjects(IEnumerable<MessageDco> objMessageDco)
    {
        if (objMessageDco != null)
        {
            return objMessageDco.Select(a => ToDataContractObjects(a)).ToArray();
        }
        else
        {
            return null;
        }
    }
}
然后我在浏览器中浏览了我的服务,我得到的XML如下:

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; }
}
<MessageResponse>
    <Status>SUCCESS</Status>
    <Messages>
       <a:Message>
         <a:message>msg1</a:message>
         <a:MsgID>1</a:MsgID>
       </a:Message>
    </Messages>
</MessageResponse>
public sealed class Mapper
    {
     public static MessageDco[] ToDataContractObjects(IEnumerable<MessageDco> objMessageDco)
    {
        if (objMessageDco != null)
        {
            return objMessageDco.Select(a => ToDataContractObjects(a)).ToArray();
        }
        else
        {
            return null;
        }
    }
}
我的mapper类如下所示:

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; }
}
<MessageResponse>
    <Status>SUCCESS</Status>
    <Messages>
       <a:Message>
         <a:message>msg1</a:message>
         <a:MsgID>1</a:MsgID>
       </a:Message>
    </Messages>
</MessageResponse>
public sealed class Mapper
    {
     public static MessageDco[] ToDataContractObjects(IEnumerable<MessageDco> objMessageDco)
    {
        if (objMessageDco != null)
        {
            return objMessageDco.Select(a => ToDataContractObjects(a)).ToArray();
        }
        else
        {
            return null;
        }
    }
}
公共密封类映射器
{
公共静态消息DCO[]ToDataContractObjects(IEnumerable objMessageDco)
{
if(objMessageDco!=null)
{
返回objMessageDco.Select(a=>ToDataContractObjects(a)).ToArray();
}
其他的
{
返回null;
}
}
}
如果我们看到标签中添加了“a:”。为什么要加?我无法从标签中删除“a:”。请帮助我如何从标签中删除“a:”。此外,若您看到MessageResponse类(状态标记)正确,但MessageResponse中的数组列表(即:Message[])错误,那个么也可以这样做


提前感谢。

a是为元素生成的名称空间

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

[ServiceContract(Namespace="")] 

谢谢你的回复。我编辑了响应XML,这是我从服务中获得的正确XML。我在ServiceContract中添加了名称空间(比如:[ServiceContract(Namespace=”“)]),但响应是相同的。请告诉我我的代码中是否有任何错误。