WCF RESTful服务 - 如何使我的服务不需要请求中的xmlns属性?

时间:2016-10-04 19:22:55

标签: c# xml rest wcf

我正在构建一个RESTful服务,当请求中包含xmlns属性时,该服务可以正常工作。但是,我需要使服务能够在没有xmlns属性的情况下接受请求。

这就是我现在所做的工作:

<ITEM_SEND xmlns="http://schemas.datacontract.org/2004/07/WCFInventoryService">
  <TRAN_ID>9483564</TRAN_ID>
  <VENDOR_PART>D336</VENDOR_PART>
</ITEM_SEND>

这是我需要接受的请求:

<ITEM_SEND>
  <TRAN_ID>9483564</TRAN_ID>
  <VENDOR_PART>D336</VENDOR_PART>
</ITEM_SEND>

这是我的界面:

namespace WCFInventoryService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract(Namespace = "")]
    public interface IInvService
    {
        [OperationContract]
        //[WebGet(UriTemplate="/Employees",ResponseFormat=WebMessageFormat.Xml )]
        //Employee[] GetEmployees();
        [WebInvoke(Method = "POST",
            RequestFormat = WebMessageFormat.Xml,
            ResponseFormat = WebMessageFormat.Xml,
            BodyStyle = WebMessageBodyStyle.Bare,
             UriTemplate = "")]
        ITEM_REPLY GetInventory(ITEM_SEND query);
    }

 public class ITEM_SEND
    {
        public string TRAN_ID { get; set; }
        public string VENDOR_PART { get; set; }
    }
}

我尝试通过将其设置为&#34;&#34;来改变我对我的请求的数据合同的命名空间。

[DataContract(Namespace = "")]
    public class ITEM_SEND
    {
        public string TRAN_ID { get; set; }
        public string VENDOR_PART { get; set; }
    } 

但是当我在浏览器中查看我的svc以及我的请求发生变化时,这并没有起作用 Without Namespace = ""

With Namesspace = ""

1 个答案:

答案 0 :(得分:2)

您可以明确定义您的数据协定不属于任何命名空间 -

[DataContract(Namespace = "")]
public class ITEM_SEND
{
    [DataMember]
    public string TRAN_ID { get; set; }
    [DataMember]
    public string VENDOR_PART { get; set; }
}

希望这有帮助