C# 从wcf中删除不必要的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

我已经构建了一个运行良好的web服务,只是我正在尝试删除xsi和xsd名称空间

我看到很多链接显示我必须使用如下自定义序列化程序:

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>