2015-05-29 22 views
0

我不希望我的web方法名稱作爲XML中層次結構的一部分。我嚴格地希望傳入的對象被封裝在一個SOAP信封中,然後有一個空Header,並且在Body中,我希望第一個子元素是我傳入的對象的類型(在這種情況下,ns:QueryRequest)。如何從WCF Web服務中的xml中抑制方法名稱?

當我有一個.asmx網頁時,我在我的層次結構中獲得了兩個額外的級別(即web方法名稱和傳入Web方法的對象名稱)。所以,在Body下面,我有GetData - > actualData - > ns:QueryRequest。我能夠通過在web方法上創建[SoapDocumentMethod]並設置ParameterStyle = SoapParameterStyle.Bare來抑制前兩個元素。

我現在正在創建一個WCF網頁進行比較。我在界面上的[OperationContract]下面指定了[XmlSerializerFormat],這解決了我的命名空間問題。我嘗試在BodyStyle = WebMessageBodyStyle.Bare下面實現[WebInvoke]和[WebGet],但它並沒有抑制接口中的GetData方法名稱。我需要Body下面的第一個元素是ns:QueryRequest而不是GetData。

我該如何做到這一點?

回答

0

您爲輸入參數定義了一個[MessageContract(IsWrapped = false)],併爲輸出定義了一個[MessageContract(IsWrapped = false)]。這將抑制不需要的根元素。

相關問題