C# Azure Function VS2017预览工具-如何绑定到CloudBlockBlob?

C# Azure Function VS2017预览工具-如何绑定到CloudBlockBlob?,c#,azure,visual-studio-2017,azure-functions,C#,Azure,Visual Studio 2017,Azure Functions,注意:我已经解决了这个问题,但我还是将它发布在这里,这样其他人就可以比我更快地找到答案:-) 我在VS2015中创建了一个Azure函数“类库”项目,现在我正尝试将该项目迁移到VS2017 15.3预览版中的新“Azure函数”项目类型(使用Visual Studio 2017 Azure函数工具) 在VS2015中,C函数签名如下所示: public static HttpResponseMessage Run(HttpRequestMessage req, CloudBlockBlob my

注意:我已经解决了这个问题,但我还是将它发布在这里,这样其他人就可以比我更快地找到答案:-)

我在VS2015中创建了一个Azure函数“类库”项目,现在我正尝试将该项目迁移到VS2017 15.3预览版中的新“Azure函数”项目类型(使用Visual Studio 2017 Azure函数工具)

在VS2015中,C函数签名如下所示:

public static HttpResponseMessage Run(HttpRequestMessage req, CloudBlockBlob myFile)
public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "files/{id}/download")] HttpRequestMessage req,
    [Blob("mycontainer/{id}", FileAccess.ReadWrite)] CloudBlockBlob myFile)
我的function.json如下所示:

public static HttpResponseMessage Run(HttpRequestMessage req, CloudBlockBlob myFile)
public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "files/{id}/download")] HttpRequestMessage req,
    [Blob("mycontainer/{id}", FileAccess.ReadWrite)] CloudBlockBlob myFile)
{
“绑定”:[
{
“类型”:“httpTrigger”,
“方向”:“在”,
“名称”:“请求”,
“方法”:[
“得到”
],
“authLevel”:“匿名”,
“路由”:“文件/{id}/下载”
},
{
“类型”:“http”,
“方向”:“输出”,
“名称”:“res”
},
{
“名称”:“我的文件”,
“类型”:“blob”,
“方向”:“inout”,
“路径”:“mycontainer/{id}”,
“连接”:“[我的连接字符串]”
}
],
“禁用”:错误
}
在VS2017中,我必须使用绑定属性而不是function.json,因此我尝试了以下方法:

public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "files/{id}/download")] HttpRequestMessage req,
    [Blob("mycontainer/{id}", FileAccess.Read)] CloudBlockBlob myFile)
但是,当我尝试运行此操作时,会收到以下错误消息:

[函数名]:Microsoft.Azure.WebJobs.Host:索引方法“[函数名]”时出错。Microsoft.Azure.WebJobs.Host:无法使用access Read将blob绑定到CloudBlockBlob。

诀窍是,即使我的代码只需要读取(FileAccess.read)blob的属性,我也需要在binding属性中指定FileAccess.ReadWrite,如下所示:

public static HttpResponseMessage Run(HttpRequestMessage req, CloudBlockBlob myFile)
public static HttpResponseMessage Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "files/{id}/download")] HttpRequestMessage req,
    [Blob("mycontainer/{id}", FileAccess.ReadWrite)] CloudBlockBlob myFile)
我应该记得这一点(这就是为什么我必须在我的function.json中将绑定方向设置为“inout”)。。。哦。据我所知,FileAccess.ReadWrite是绑定ICloudBlockBlob、CloudBlockBlob或CloudPageBlob值的唯一有效FileAccess值