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

本地调试Azure函数

姜志
2023-03-14

我有一个功能。Net标准2.0:

    [FunctionName("A_Test")]
    public static async Task<string> Test(ILogger log, ExecutionContext context)
    {
        log.LogInformation("test");
        return "hello";
    }

根据本文:https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local部分"非HTTP触发函数"

“对于HTTP触发器和Webhook以外的所有类型的函数,您都可以通过调用管理终结点在本地测试您的函数。在本地服务器上使用HTTP POST请求调用此终结点会触发该函数。您可以选择将测试数据传递到POST请求主体中的执行。此功能类似于Azure门户中的测试选项卡。

可以调用以下管理员终结点来触发非HTTP函数:"

 http://localhost:{port}/admin/functions/{function_name}

我应该能够使用以下方法测试非http触发的函数:

curl --request POST -H "Content-Type:application/json" --data '{}' http://localhost:7071/admin/functions/A_Test -v

然而,当作为调试运行时,我得到的是一个400错误:

[08/03/2019 12:59:08] Host lock lease acquired by instance ID '000000000000000000000000BED482F9'.
[08/03/2019 12:59:09] Executing HTTP request: {
[08/03/2019 12:59:09]   "requestId": "6dba82a1-65bf-4e10-bcc2-1e7ecdb3524c",
[08/03/2019 12:59:09]   "method": "POST",
[08/03/2019 12:59:09]   "uri": "/admin/functions/A_Test"
[08/03/2019 12:59:09] }
[08/03/2019 12:59:10] Executed HTTP request: {
[08/03/2019 12:59:10]   "requestId": "6dba82a1-65bf-4e10-bcc2-1e7ecdb3524c",
[08/03/2019 12:59:10]   "method": "POST",
[08/03/2019 12:59:10]   "uri": "/admin/functions/A_Test",
[08/03/2019 12:59:10]   "identities": [
[08/03/2019 12:59:10]     {
[08/03/2019 12:59:10]       "type": "WebJobsAuthLevel",
[08/03/2019 12:59:10]       "level": "Admin"
[08/03/2019 12:59:10]     },
[08/03/2019 12:59:10]     {
[08/03/2019 12:59:10]       "type": "WebJobsAuthLevel",
[08/03/2019 12:59:10]       "level": "Admin"
[08/03/2019 12:59:10]     }
[08/03/2019 12:59:10]   ],
[08/03/2019 12:59:10]   "status": 400,
[08/03/2019 12:59:10]   "duration": 614
[08/03/2019 12:59:10] }

为什么?

共有2个答案

臧增
2023-03-14

您的函数没有任何与之关联的触发器,这可能是因为它没有被标识为触发器。例如,可以添加计时器触发器。

以下方法/黑客可能也适用:当我有一个非HTTP触发器,并希望在本地测试它时,我会将实际逻辑提取到它自己的类中。然后我打开一个单独的HTTP触发器,它只用于测试。

乐正迪
2023-03-14

这里的问题是,curl在POST请求的实际正文中包含了来自--data'{}的引号。

Azure function需要这样的主体:

{}

事实上,这是:

'{}'

解决方案是不对--data参数使用引号,如下所示:

curl--request POST-H“内容类型:application/json”--数据{http://localhost:7071/admin/functions/A_Test-v

 类似资料:
  • 您好,我在Azure门户中创建了一个函数并看到队列数据出队。 我在我的计算机上安装了一个CLI,当我运行项目时,它将显示一个func。exe命令提示符。我在local.settings.json中添加了如下连接字符串: 当我在门户中向队列中添加消息时,应用程序未收到该消息。我需要更新哪些其他设置。

  • 获得本地调试的Azure函数以连接到Cosmos DB仿真器的本地实例的秘诀是什么? 编辑:其他人要求提供该函数的完整代码。给你:

  • 我有Azure功能,并试图在本地启动,但启动后命令行显示和隐藏不到1秒。我试着在截图上抓住它: 看起来没有正确的启动参数。 my local.settings.json: 我的csproj文件是: 另外,我设置了“可执行文件”在调试属性窗口和完整路径上启动: 因为没有它,azure函数无法在本地启动,出现错误: 我能在哪里检查它?

  • 我们正在构建一个系统,一些客户将在Azure中运行,一些客户将通过docker-compose在他们自己的硬件上在Docker中运行。我们的微服务基于Azure Functions。 我已经编写了一个docker compose文件来设置各种图像(网站、Azure函数和RabbitMQ) docker compose如下所示(简化): 当docker-comuse启动时,我在Azure Funct

  • 在Azure Portal中的Azure函数中遇到了一个非常奇怪的问题。在我的例子中,Azure函数有一个输入,HTTPendpoint具有POST操作。显然,Azure函数在运行时失败,错误如下:

  • 我目前正在Visual Studio中使用微软的Azure函数开发一个函数应用程序。我能够在azure上部署和发布功能,它似乎可以运行,但每当我试图在本地运行功能时,托管环境都无法找到任何“作业”。我在下面附上了一张图片。 必须指出的是,我在某个时候能够在本地部署,但我相信在一些更新之后,我无法运行我的功能 Azure函数和Web作业工具的当前版本:15.0.40424.0 当我创建新项目时,我尝