2010-07-25 69 views
0

我使用WebGet和WebInvoke公開了WCF服務,這些服務要求將數據封裝在xml中。我希望能夠返回原始數據,而不用將其包裝在xml中,還允許客戶端調用我的服務,而無需將請求包裝在xml中。用於WebGet和WebInvoke的WCF RequestFormat

我使用協議緩衝區序列化的數據,並將結果轉換爲base64String所以WebGet響應的樣子:

<BinVehicleResp xmlns="http://schemas.datacontract.org/2004/07/NTouchServices.Binary_Types" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <BinVehicle>CgsxMjMtNDU2LTc4ORIFNDQwMDAaBUJsYWNrIgVKZXR0YVIJCJrYqoXAShAE (BINARY DATA)</BinVehicle> 
</BinVehicleResp> 

而一個WebInvoke輸入必須看像一個最低:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> BINARY DATA </string> 

我真的只想要BINARY DATA部分,尤其是WebInvoke。我可以和WebGet一起生活。有沒有人有任何建議,我可以允許客戶端使用WebInvoke做一個HTTP POST,而不需要用xml包裝請求?謝謝。

+0

如果您發佈的是代碼或XML,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010),以良好地格式化和語法突出顯示它! – 2010-07-25 14:42:02

回答

0

我不確定我完全理解了這個問題。您聲明您需要將要發佈的數據用XML包裝,但是然後詢問如何將數據發佈但不包含在XML中。我最初的答案是使用BodyStyle參數來聲明WebInvoke服務方法:

[OperationContract] 
[WebInvoke(Uri="SomeMethod?x={foo}&y={bar}", BodyStyle=WebMessageBodyStyle.WrappedRequest)] 
public string SomeMethod(string foo, string bar) { 
... 
} 

下面是BodyStyle MSDN文檔 - 你可以將其設置爲裸(既不迴應也不要求被包裹),包裹,或WrappedRequest /響應。

我希望這會有所幫助。

+0

這看起來很有前途,我會試試看。抱歉,這個問題令人困惑。我實際上的意思是爲了使它成功的方式,現在WCF需要包裝請求和響應 - 但是,我個人希望響應不被包裝。 – Sean 2010-07-27 11:56:49

+0

沒問題。讓我知道如果這工作 - 我很好奇。謝謝! – 2010-07-27 18:32:04