C# WCF服务响应中出现意外的标记名
我有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
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=”“)]),但响应是相同的。请告诉我我的代码中是否有任何错误。