Я пишу функцию Azure v2, в которой я получу доступ к хранилищу BLOB-объектов Azure.Поскольку у меня возникли проблемы, я сократил его до этого минимального примера.
namespace Test
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "test")] HttpRequest req,
ILogger log)
{
var azureStorage = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
var blobClient = azureStorage.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("migrated-load-sets-localhost");
var blobReference = container.GetBlockBlobReference("11016093-2f6e-4631-97c1-04f8acfb2370");
var memoryStream = new MemoryStream();
var accessCondition = AccessCondition.GenerateIfExistsCondition();
var blobRequestOptions = new BlobRequestOptions();
await blobReference.DownloadToStreamAsync(memoryStream, accessCondition, blobRequestOptions, null);
var text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
return new OkObjectResult(text);
}
}
}
Когда я запускаю и нажимаю на это, я получаю ошибку
System.Private.CoreLib:Исключение при выполнении функции: Function1.Microsoft.WindowsAzure.Storage: неверный формат значения '*'.System.Net.Http: формат значения '*' недопустим.
Если я изменю
var accessCondition = AccessCondition.GenerateIfExistsCondition();
на
var accessCondition = AccessCondition.GenerateEmptyCondition();
, это работает.
При отладке я заметил, что accessCondition.IfMatchETag
равен "*"
, поэтому кажется, что это может быть причиной.
Я что-то не так делаю, когда использую AccessCondition.GenerateIfExistsCondition()
, илиесть ли ошибка в библиотеке?