0

我收到此错误:

Microsoft.Azure.WebJobs.Host:blob 容器绑定仅支持“读取”文件访问模式。

根据文档,应该支持 out 吗?

我最初Attributes在方法定义中添加了它。但是,我得到了同样的错误,所以我删除了我的方法定义中的所有属性,所以新的方法定义是:

public static async Task RunAsync(CloudBlockBlob myBlob,  string name, 
IAsyncCollector<ProfilePictureUrl> client, CloudBlockBlob resizedBlob, TraceWriter log)

这是我的function.json

{
  "bindings": [
    {
      "type": "blobTrigger",
      "path": "profile-pictures/{name}",
      "direction": "in",
      "name": "myBlob"
    },
    {
      "type": "documentDB",
      "databaseName": "TestDB",
      "collectionName": "ResizedProfilePictures",
      "createIfNotExists": true,
      "direction": "out",
      "name": "client"
    },
    {
      "type": "blob",
      "path": "resized-profile-pictures",
      "direction": "out",
      "name": "resizedBlob"
    }
  ],
  "disabled": false,
  "scriptFile": "..\\Test.Functions.dll",
  "entryPoint": "Test.Functions.ResizeImage.RunAsync"
}

我正在使用 Azure CLI beta 100。如果我resizedBlob从方法定义和 function.json 中删除,那么它可以正常工作。

4

4 回答 4

2

CloudBlobContainer 必须作为输入绑定进行绑定。这是一个工作示例:

#r "Microsoft.WindowsAzure.Storage"

using Microsoft.WindowsAzure.Storage.Blob;

public static void Run(Stream input, Stream output, 
                       CloudBlobContainer container, TraceWriter log)
{
    var blobs = container.ListBlobs();
    log.Info($"{blobs.Count()} blobs in container.");
}

以及对应的function.json:

{
  "bindings": [
    {
      "name": "input",
      "type": "blobTrigger",
      "direction": "in",
      "path": "input/{name}",
      "connection": "test_STORAGE"
    },
    {
      "name": "container",
      "type": "blob",
      "direction": "in",
      "path": "input",
      "connection": "test_STORAGE"
    }
  ]
}
于 2017-07-03T17:30:20.637 回答
0

CloudBlobContainer列为输出绑定支持的类​​型。因此,您需要使用列出的类型之一。

我猜,您正在尝试动态设置输出文件的名称。为此,您需要将名称绑定到触发参数(例如{name}),或者使用命令式绑定(就像您已经为输出绑定所做的那样)。

如果您有其他用例,请使用代码示例扩展您的问题。

如果您确实需要CloudBlobContainer参数,请将其列为另一个in绑定。

于 2017-07-02T07:42:27.590 回答
0

该问题是一个错误,现已在该功能的最新版本中修复。

https://github.com/Azure/azure-webjobs-sdk-script/issues/1783

于 2017-09-03T17:55:09.193 回答
0

这应该适用于新发布的 Functions VS 工具(非预览版)。你能更新到最新的位吗?

对于 VS 工具,Functions 现在以与 webjobs 相同的方式直接加载 DLL,因此所有 webjobs 绑定都将按原样工作。Function.json 中唯一的东西是触发器绑定和“configurationSource”:“attributes”属性。该属性告诉它使用属性而不是 function.json。[1]

[1] 见https://github.com/Azure/azure-webjobs-sdk-script/issues/1508

于 2017-08-31T16:27:44.290 回答