Я пытаюсь использовать Azure MediaService API
вместе с Azure Storage API
в API Service
, размещенном в Azure
.
Пользователь отправляет видеопоток службе в качестве HttpPost
, служба сохраняет видео как blob в моей учетной записи Storage, медиасервер кодирует видео и когда ссылка на видео готова, она возвращается пользователя.
Но когда я пытаюсь создать Asset
a System.NotSupportedException
, выдается с сообщением:
Исключение выбрано: "System.NotSupportedException" в Microsoft.Data.Services.Client.dll Исключение: "System.NotSupportedException" в файле mscorlib.dll Ошибка iisexpress.exe: 0: Исключение = System.NotSupportedException: Это целевая структура не позволяет вам напрямую перечислить данные запрос обслуживания. Это связано с тем, что перечисление автоматически отправляет синхронный запрос к службе данных. Потому что эта структура только поддерживает асинхронные операции, вместо этого вы должны называть BeginExecute и EndExecute для получения результата запроса, который поддерживает перечисление.
Я использую следующие версии необходимых зависимостей:
Microsoft.Data.Services.Client - 5.6.2.0
Microsoft.WindowsAzure.MediaServices.Client - 3.0.0.8
Microsoft.WindowsAzure.Storage - 3.1.0.1
Вот мой код:
CloudMediaContext _context;
IAsset asset;
using (MemoryStream Ms = new MemoryStream(data.Data))
{
_context = new CloudMediaContext("accountName", "accountKey");
asset = await _context.Assets.CreateAsync("blobContainerName",
AssetCreationOptions.None,CancellationToken.None);
...
...
}
data.Data
содержит byte[]
видео. Исключение генерируется при вызове CreateAsync
. Я пробовал _context.Assets.Create
без везения.
ВАЖНОЕ ИЗМЕНЕНИЕ
Я создал новое консольное приложение, использовал код, который я использую в службе API, и он был успешно выполнен. Таким образом, проблема заключается в службе API.
Вот мои определения классов и методов
public class UploadController : ApiController
{
[HttpPost]
public async Task<string> PostUpload(VideoData data)
{
...
...
}
Любая альтернатива этому может быть?