Я хочу вернуть имя для BLOB-объекта, созданного в Azure, при вызове InvokeApiAsync () в моем мобильном приложении
Функция в мобильном приложении:
private const string PhotoResource = "photo";
public async Task UploadPhoto(MediaFile photo)
{
using (var s = photo.GetStream())
{
var bytes = new byte[s.Length];
await s.ReadAsync(bytes, 0, Convert.ToInt32(s.Length));
var content = new
{
Photo = Convert.ToBase64String(bytes)
};
var json = JToken.FromObject(content);
await Client.InvokeApiAsync(PhotoResource, json);
}
}
Функция Azure - run.csx:
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req,
ILogger log)
{
dynamic data = await req.Content.ReadAsAsync<object>();
string photo = data?.Photo;
var imageBytes = Convert.FromBase64String(photo);
var connectionString =
ConfigurationManager.AppSettings["BlobStorageConnectionString"];
CloudStorageAccount storageAccount;
CloudStorageAccount.TryParse(connectionString, out storageAccount);
var blobClient = storageAccount.CreateCloudBlobClient();
var blobContainer = blobClient.GetContainerReference("beerphotos");
var blobName = Guid.NewGuid().ToString();
var blob = blobContainer.GetBlockBlobReference(blobName);
blob.Properties.ContentType = "image/jpg";
await blob.UploadFromByteArrayAsync(imageBytes, 0, imageBytes.Length);
log.LogInformation($"Blob {blobName} created");
//return req.CreateResponse(HttpStatusCode.OK);
//NEW CODE ADDED AFTER ANSWER FROM JASON
var response = req.CreateResponse();
response.StatusCode = HttpStatusCode.OK;
response.Content = new StringContent(blobName);
return response;
}
Если я пытаюсь написать, возвращаем req.CreateResponse (HttpStatusCode.OK, blobName);Я получаю эту ошибку: run.csx (35,16): ошибка CS1501: нет перегрузки для метода 'CreateResponse' принимает 2 аргумента
Что мне не хватает в функции Azure?
И какдолжен ли вызов InvokeApiAsync () в моем мобильном приложении выглядеть как чтение имени большого двоичного объекта?
РЕДАКТИРОВАНИЕ:
После добавления нового кода в функцию Azure я получаю следующее необработанное исключение: Newtonsoft.Json.JsonReaderException: входная строка '813255ca-02d0-4feb-8012-2d5a0ad49464' не являетсядействительный номер.Путь '', строка 1, позиция 36.
Исключение выдается, когда Client.InvokeApiAsync (PhotoResource, json) в мобильной функции возвращается с ответом.'813255ca-02d0-4feb-8012-2d5a0ad49464' на самом деле является названием фотографии.