2012-08-28 208 views
2

我正在爲我的項目使用實體框架和wcf rest服務。 什麼,我需要的是我想改變它像這樣wcf rest服務xml結構

<ArrayOfBug> 
<Bug> 
<BugID>1</BugID> 
<PageName>Home.aspx</PageName> 
<BugDescription>Bug Testing</BugD`enter code here`escription> 
<Priority>H</Priority> 
</Bug> 
</ArrayOfBug> 

------------- 

我需要產生的屬性,而不是元素這樣

<ArrayOfBug> 
    <Bug BugID="1" PageName="Home.aspx" BugDescription="Bug Testing" Priority="H" > 
    </Bug> 
    </ArrayOfBug> 

什麼是這樣做的最佳方式的XML結構? 我的接口是這個

[OperationContract] 
     [WebGet(BodyStyle=WebMessageBodyStyle.Bare, UriTemplate = "/SelectAllBug", ResponseFormat = WebMessageFormat.Xml)] 
     List<Bug> SelectAllBug(); 

感謝像事先 Monish

回答

1

有外的箱子沒有辦法WCF做你想要什麼。

您可以通過創建一個自定義消息格式化程序來擴展WCF,如下所示good blog post.不利的一面是您需要投入一些時間來了解WCF消息處理管道如何工作以潛在地處理格式化請求和響應消息。

+0

感謝您的回答。 其實現在我只是這樣做。我得到了一些觀點,我必須繼承IDispatchMessageFormatter接口並擴展我想要的功能。 你有任何工作代碼,可以幫助我更多的我想達到什麼。 謝謝 – user1616954

+0

這篇[關於實現格式化程序的文章](http://wcfpro.wordpress.com/2011/03/03/idispatchmessageformatter/)有更多的細節。它沒有顯示'CustomXmlObjectSerializer'的實現,但是你需要做的是去掉生成的XML文檔並重新構造它,以便元素成爲轉換的XML文檔中的屬性。我會實現一個XSLT轉換,這是特定於該操作的行爲[article。](http://support.microsoft.com/kb/307322) –

+0

非常感謝您的建議我已經解決了我遇到的問題繼承IDispatchMessageFormatter接口並覆蓋公共消息SerializeReply(MessageVersion messageVersion,Object []參數,Object result)方法感謝您的幫助 – user1616954