当前位置: 首页 > 知识库问答 >
问题:

Azure 函数存储帐户连接字符串

雷骁
2023-03-14

我有一个函数应用,定义如下

[StorageAccount("DefaultEndpointsProtocol=...;AccountName=…;AccountKey=...")]
public static class Function1
{
    [FunctionName("Function1")]
    [return: Queue("lets-test-this-out")]
    public static async Task<string> Run([QueueTrigger("lets-test-this-in")] Guid  guid, TraceWriter log)
    {
        await Task.Delay(1000);
        log.Info($"C# Queue trigger function processed: {guid}");
        return Guid.NewGuid().ToString();
    }
}

其中< code > let-test-this-in 和< code > let-test-this-out 是连接字符串为< code >“defaultendpointsprocol=”的存储帐户下现有存储队列的名称...;account name =…;AccountKey= ... "(直接从门户中的访问键-连接字符串复制而来)。我发布时生成的function.json是这样的

{
  "generatedBy": "Microsoft.NET.Sdk.Functions.Generator-1.0.6",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "queueTrigger",
      "queueName": "lets-test-this-in",
      "connection": "DefaultEndpointsProtocol=...;AccountName=...;AccountKey=...;",
      "name": "guid"
    }
  ],
  "disabled": false,
  "scriptFile": "../bin/FunctionAppTest.dll",
  "entryPoint": "FunctionAppTest.Function1.Run"
}

唯一可疑的是我没有看到[返回:队列("lets-test-this")]被转换为任何值。

不管怎样,这是行不通的:

  • 当我尝试在门户中测试函数时,我看到状态:202 已接受,但输出窗格中未记录任何内容。
  • 当我在lets-test-this-in中放置一条消息时,它不会被拾取。
  • 流式处理日志将显示 [Info] 正在执行 HTTP 请求,然后什么都没有。

但有趣的是,如果我在删除 [StorageAccount] 属性后重新发布,则可以在门户中进行测试,并在流式处理日志中看到它仍在执行。

可能相关的是我的<code>local.settings。json类似于

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
    }
}

共有1个答案

阙弘博
2023-03-14

StorageAccount属性接受连接字符串所在的应用程序设置名称,而不是连接字符串本身。例如。

[StorageAccount("AzureWebJobsStorage")]

生成的<code>函数中不显示输出绑定。json-这令人困惑,但却是意料之中的。

 类似资料:
  • 您好,我正在创建一个新的blob触发的azure函数,我想了解函数头中“Connection=”参数的作用: 我所做的是完全删除该参数,在我将其部署到我的azure订阅后,它就可以正常工作了。因此,我想知道如果我没有使用连接参数指定任何特定帐户,该函数如何确定要使用哪个存储帐户。 这就是我部署函数的方式:

  • 我使用ServiceBustigger创建了一个Azure Function应用程序(监听主题订阅)。很好。但是现在我试图制作一个QueueTrigger来监听一个简单的队列,但是我得到了以下错误。 我也是这样做的。我在Visual Studio中创建了一个新项目,并将其指向我在Azure上的存储帐户。指定了队列名称。队列存在。我尝试创建一个新的共享访问策略。已将连接字符串复制到本地。设置。jso

  • 我尝试在我的函数应用程序的AzureWebJobsStorage应用程序设置中更新存储帐户连接字符串,但在更新后,所有函数都开始在响应中给出401 Unauthorized,即使函数应用程序的入站和出站IP地址已列入存储帐户的白名单中。 唯一有效的功能是具有授权级别的功能。代码中匿名。 我试着重启功能应用程序,并从azure pipelines中重新部署它,但似乎没有任何效果。我真的卡住了,不知道

  • 我在连接到ASP. NET MVC5中的Azure Blob存储帐户时遇到问题。 我看了一些教程,提出了一个带有BlobStorageContainerFactory的简单存储库模式,这样我就可以注入命名的存储库。当我使用Azure Storage local development emulator时,这段代码运行良好。以下是工厂代码: 我尝试解析连接字符串时出错: 堆栈跟踪:

  • 在门户中创建azure函数应用程序后,我尝试通过从可用模板中选择“BbloTrigger-C#”并配置blob路径和存储帐户连接字符串来创建新函数。虽然我可以输入blob路径,但存储帐户的文本字段已禁用。我错过了什么? 谢谢。Raghu/...

  • 是否需要其他数据来生成ConnectionString?