2011-07-11 73 views
1

我有一個OData服務,並希望公開一個方法,接受一個字節數組作爲圖像,我可以在服務器端進行反序列化並保存。我創造了這樣的方法:oData方法張貼圖像

[WebInvoke(UriTemplate = "/PutImage", Method = "POST")] 
public string PutImage(byte[] upE) 
{ 
    string ret = "Good"; 
    //De-Serialize here. 
    return ret; 
} 

我還設置了配置此方法是這樣的:

config.SetServiceOperationAccessRule("PutImage", ServiceOperationRights.All); 

我相信這將在服務端的工作,但我不確定如何調用該來自客戶端。

有沒有人有這方面的經驗?

謝謝。

回答

2

OData(和WCF數據服務)不支持像上面那樣的服務操作。首先UriTemplate被忽略或不允許。其次,服務操作的所有參數始終在URL中傳遞,而不在正文中傳遞。因此,即使上述方法可行,您可能也不想將整個圖像文件序列化到URL中(服務器很可能會拒絕這樣的大URL)。 在OData中處理二進制/大型流的方法是使用媒體鏈接條目/媒體資源或新的命名流。

有一個偉大的演練如何在這裏實現和使用MLE/MR:http://blogs.msdn.com/b/astoriateam/archive/2010/08/04/data-services-streaming-provider-series-implementing-a-streaming-provider-part-1.aspxhttp://blogs.msdn.com/b/astoriateam/archive/2010/09/08/data-services-streaming-provider-series-part-2-accessing-a-media-resource-stream-from-the-client.aspx

命名流是在新的CTP相似 - 在這裏描述:http://blogs.msdn.com/b/astoriateam/archive/2010/11/12/named-resource-streams.aspx