Метод oData для публикации изображения - PullRequest
1 голос
/ 11 июля 2011

У меня есть служба 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 ]

2 голосов
/ 12 июля 2011

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.aspx, http://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

0 голосов
/ 15 июля 2011

Можно использовать POST в сочетании с одатой: http://protsyk.com/cms/?p=287

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...