Я создал службу WCF, которая возвращает некоторые данные, а также позволяет публиковать некоторые данные.
Способы обслуживания следующие:
[OperationContract]
bool UploadStream(Guid key, List<StreamRecord> values);
[OperationContract]
bool RegisterStream(Guid key);
[OperationContract]
StreamCollection GetStreams(Guid key);
Мне нужно реализовать это с помощью интерфейса REST.
Я создал новый интерфейс IRestService, как показано ниже
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/bitpool/{poolKey}/streams")]
BitStreamCollection GetBitStreams(string poolKey);
и все работает нормально (я могу проверить это из адресной строки браузера, и все в порядке)
Теперь я хочу также реализовать метод Upload, но я не уверен, как это сделать.
Я пробовал с
[WebInvoke(
Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/stream/{streamKey}/records/{values}")]
bool UploadStream(string streamKey, List<StreamRecordEntity> values);
Но когда я пытаюсь получить доступ к сервису в браузере, он выдает ошибку
http://localhost:6767/RestServer.svc/
выдает ошибку:
Операция 'UploadBitStream' в контракте 'IRestServerJson' имеет переменную пути с именем 'values', которая не имеет тип 'string'. Переменные для сегментов пути UriTemplate должны иметь тип 'string'.
Я думаю, что для POST я не могу определить такой URL, но как мне это сделать?
Кроме того, метод RegisterStream должен проверить, существует ли поток с ключом, а если нет, создать его и вернуть true, в противном случае вернуть false.
Должен ли я определить его как GET (поскольку он должен возвращать результат) или как PUT или POST?
Спасибо