CI / CD之后找不到Azure Function API

时间:2019-05-14 13:23:11

标签: azure azure-devops azure-functions

但是,Azure Functions学习者遇到一个问题对我来说似乎很奇怪。

我从Visual Studio 2017(手动)发布了(以调试方式)具有匿名身份验证级别的Azure Function应用。这仅使用实体框架核心进行简单的CRUD操作。 Azure Function的运行时版本为2。Postman进行了良好的测试。这只是其中一个功能的签名(它们都具有相同的Route,但每个CRUD操作具有不同的HTTP动词)

[FunctionName("DeleteProductFunction")]
    public static async Task<HttpResponseMessage> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "product")] HttpRequest req,
        ILogger log)

问题:

一旦我使用Azure DevOps设置了CI / CD管道,一切就开始了。整个管道成功进行,并将新版本真正发布到Azure Function中。之后,回到邮递员进行测试,我收到所有API(CRUD)的404。

我做了什么:

  • 我尝试使用Visual Studio 2017删除现有的发布配置文件并从头开始创建一个新的配置文件。
  • 此外,为此创建了一个新的发布管道。
  • 我从App Service编辑器(预览版)中查看了该函数,以查看是否实际上一切都在那里
  • 我在本地测试了该应用,并且运行正常

在这里我搞砸了什么?我不知道!

任何意见,经验分享或对此的帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

好吧..我找到了解决方案。基本上,在我的问题中已经暴露了这一点,而没有注意到:)

我搞砸了Build定义:我将Build,Archive和Publish Artifact作为Build定义中的任务。第一个将发布的文件输出到“ output_publish”文件夹中。默认情况下,下一个任务“存档”也被设置为该文件夹的“根文件夹或要存档的文件”。我遇到一个错误,即“找不到指定的路径”。为了(仅)避免该错误,我(不小心)选择了项目的Main文件夹,而不是“ publish_output”。这是有问题的!为什么?因为当所有内容都转至Azure时,“ function.json”正在按照此路径“ scriptFile”:“ ../ bin / MyFunctionApp.dll”查找“ dll”,但是此路径无效。

我该如何解决?

在Build定义中,我在项目主文件夹之后即“ project_folder / publish_output”之后添加了“ publish_output”。然后,上述dll路径已解决,我的功能现在可以正常工作。

希望这可能对其他人有所帮助。