oData发布图像的方法

时间:2011-07-11 16:41:26

标签: 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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

可以将 POST 与odata结合使用:http://protsyk.com/cms/?p=287