如何从Web服务输出中省略xmlns =“http://tempuri.org/”

时间:2012-03-13 13:17:52

标签: c# web-services xml-serialization

你能帮助我如何在asp.net web service(asmx)的输出中的每个元素中省略xmlns="http://tempuri.org/"声明?

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <DataItem>
    <Id xmlns="http://tempuri.org/">463d931f-5f14-447d-99cd-289cae2a5b6d</Id>
    <Created xmlns="http://tempuri.org/">2012-03-13T13:47:13.8626511+01:00</Created>
    ...
  </DataItem>
  ...

Web服务定义如下:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]    
public class DataWebService : System.Web.Services.WebService
{

    [WebMethod]
    public DataCollection GetData()
    {
        ...
    }
}   

数据项是EF实体:

[EdmEntityTypeAttribute(NamespaceName="DataEntityModel", Name="DataItem")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class DataItem : EntityObject
{

    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.Guid Id
    {
       ...
    }
}


public class DataItemCollection : Collection<DataItem>
{

}

当我从属性中删除[WebService(Namespace = "http://tempuri.org/")]时,结果是相同的。

1 个答案:

答案 0 :(得分:2)

不要删除[WebService(Namespace = "http://tempuri.org/")]。相反,使用您自己的命名空间。也许像http://webservices.yourcompany.com/datawebservice这样的东西。您还可以在实体上放置显式名称空间。

但是,我还建议您停止使用ASMX服务,而是使用WCF。