Azure函数未显示在门户网站的Function应用程序中

时间:2019-05-13 04:44:54

标签: azure azure-functions

我有一个包含Web应用程序和类库的解决方案。我为此添加了两个Azure功能项目,第一个是版本1,第二个是版本2。两者都在本地运行良好。该代码位于在线存储库(Visual Studio Online,现在为Azure DevOps)中,我将其从连续部署设置为门户中设置的Azure功能。但是,尽管已像Azure网站一样成功部署了代码,并且URL显示“您的功能应用已启动并正在运行”,但两个项目都未显示在门户的“功能”下。我正在使用Visual Studio 2017。

7 个答案:

答案 0 :(得分:2)

Azure Functions版本1上的.Net Framework我也遇到了同样的问题。我通过为创建zip文件指定正确的根文件夹来解决此问题:bin/release/net471

答案 1 :(得分:2)

虽然我发现@HariHaran的答案很有帮助,但并不能完全解决我的特定问题。这是我使用预编译的Azure函数找到的解决方案:

  1. 将C#函数签入Azure DevOps存储库(或任何存储库)。
  2. 使用以下管道步骤

npm安装

  • 工作文件夹:$(System.DefaultWorkingDirectory)

dotnet构建

  • 参数:-配置发布

存档文件

  • 根文件夹:$(System.DefaultWorkingDirectory)/bin/Release/netcoreapp2.1
  • 存档类型:zip
  • 要创建的存档文件:$(Build.ArtifactStagingDirectory)/ $(Build.BuildId).zip)
  • 替换现有存档:true

请注意,您的/ bin文件夹路径的根文件夹结构可能有所不同。进行相应的调整。

Azure Function App部署

  • (选择您的订阅,应用类型和名称)
  • 包或文件夹:$(Build.ArtifactStagingDirectory)/ $(Build.BuildId).zip

对我而言,关键是要了解预编译的Azure函数需要特定的文件夹结构,如此处定义:https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library#functions-class-library-project。要使您的功能在Azure门户中显示,必须获取文件夹/文件结构。

因此,我在BufReader文件夹中的结构如下所示:

/wwwroot

答案 2 :(得分:1)

我认为您的功能未部署到Azure中的正确路径。检查scm / Kudo以验证其是否正确部署。

答案 3 :(得分:1)

一团糟,还没有经过全面的测试,但是我设法进行了部署。我删除了Version 1 Function项目,确保门户网站环境为Version 2,禁用了连续部署,并从Visual Studio手动发布了该项目。除了SCM / Kudu,文件夹结构似乎相同。不知道是哪一个成功了,只是现在很高兴。

答案 4 :(得分:1)

如果您无法使CD正常工作,这就是窍门。您提到您正在使用Runtime V2(.NET CORE)。我也在CI / CD中设置了一些功能。在Build Pipeline使用dotnet Build任务构建函数项目中,仅使用Function项目路径将其指向。

enter image description here

然后在任务的参数中添加 /p:DeployOnBuild=true /p:DeployTarget=Package;CreatePackageOnPublish=true

在构建任务之后,默认情况下使用Publish Artifact任务,它将输出输出到$(Build.ArtifactStagingDirectory) enter image description here

现在是最后一步。使用Azure App Service Deploy任务,并使用您的凭据(例如subscription,RG等)进行身份验证。

现在在App Service Type中选择FunctionApp on Windows/Linux(您的选择)

现在在Package or Folder参数中提供$(Build.ArtifactStagingDirectory)/YourFunctionProjectName.zip

enter image description here

这帮助我为Azure功能设置CI / CD。

答案 5 :(得分:1)

另一种不显示(部署)功能的解决方案 - 在 CD 管道“Azure Functions App Deploy”中,“部署方法”设置为“自动检测”。 将其更改为“Zip Deploy”解决了该问题。

它在技术上做了什么:

Deleting App Service Application settings. Data: ["WEBSITE_RUN_FROM_ZIP","WEBSITE_RUN_FROM_PACKAGE"]
Updated App Service Application settings and Kudu Application settings.
Package deployment using ZIP Deploy initiated.

启用“自动检测”时:

Trying to update App Service Application settings. Data: {"WEBSITE_RUN_FROM_PACKAGE":"1"}
Deleting App Service Application settings. Data: ["WEBSITE_RUN_FROM_ZIP"]
App Service Application settings are already present.
Package deployment using ZIP Deploy initiated.

答案 6 :(得分:0)

存档时,尝试指向发布输出文件夹而不是根文件夹。例如,如果将构建输出文件夹设置为“ publish_output” (--output publish_output --configuration Release),则尝试存档“ publish_output”文件夹,而不是整个根文件夹。

因此,在部署azure函数时,我们的源包将仅具有已发布的输出,而没有整个文件夹。以下是使用az部署功能应用程序的示例。

az functionapp deployment source config-zip -g $rg_name -n "$(fnapp_name)" --src $srcpkgpath