C# 从wcf中删除不必要的xsi和xsd命名空间
我已经构建了一个运行良好的web服务,只是我正在尝试删除xsi和xsd名称空间 我看到很多链接显示我必须使用如下自定义序列化程序:C# 从wcf中删除不必要的xsi和xsd命名空间,c#,wcf,C#,Wcf,我已经构建了一个运行良好的web服务,只是我正在尝试删除xsi和xsd名称空间 我看到很多链接显示我必须使用如下自定义序列化程序: XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); 但我没有找到在代码中实现这一点的方法。这是我的密码: [ServiceContract, XmlSerializerFormat] [AspN
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
但我没有找到在代码中实现这一点的方法。这是我的密码:
[ServiceContract, XmlSerializerFormat]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyUser
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "getUserInfo?token={userId}", BodyStyle = WebMessageBodyStyle.Bare)]
public PersonnResponse ValidateToken(string userId)
{
var response = new PersonnResponse();
response.userId = userId;
response.firstName = myOtherServiceGetFirstName(userId);
response.lastName = myOtherServiceGetLastName(userId);
return response;
}
[DataContract(Name = "person", Namespace = "")]
public class PersonnResponse
{
[DataMember(Name = "userId", EmitDefaultValue = false)]
public string userId { get; set; }
[DataMember(Name = "firstName", EmitDefaultValue = false)]
public string firstName { get; set; }
[DataMember(Name = "lastName", EmitDefaultValue = false)]
public string lastName { get; set; }
}
要获得您想要的,您应该实施: 您将得到如下XML:
<?xml version="1.0" encoding="utf-16"?>
<PersonnResponse>
<userId>Id</userId>
<firstName>Call Me</firstName>
<lastName>Heisenberg</lastName>
</PersonnResponse>
身份证件
打电话给我
海森堡
为什么要删除这些名称空间?猜怎么着?来自另一家公司的客户不喜欢他们!“不喜欢他们”?你可以温和地问客户同样的问题。当然,你必须在“客户发言”中这样做。例如,对客户机说,“我们将努力消除名称空间,因为您发现它们不整洁”。然后客户会说,“哦,是的,那是对的”,或者“不,那不是原因——我们有这个脚本,它不能解析名称空间”。我能理解这一点。我想知道我到底在哪里告诉我的WCF项目,该项目将序列化此文档并将其发回。
<?xml version="1.0" encoding="utf-16"?>
<PersonnResponse>
<userId>Id</userId>
<firstName>Call Me</firstName>
<lastName>Heisenberg</lastName>
</PersonnResponse>