You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform部署Azure Function App提示dotnet版本不支持警告

警告出现原因

这个警告是Terraform创建Windows版Azure Function App时的默认运行时配置和项目实际使用的版本不匹配导致的,和项目代码、DevOps流水线配置无关,具体逻辑:

  • 你当前的项目配置完全合规:目标框架net6.0、Functions运行时版本v4、使用4.x版本的SDK,对应官方支持的Azure Functions v4 .NET 6 in-process模型。
  • 手动通过Azure门户创建同版本Windows Function App时,门户会自动写入平台级配置:将Functions扩展版本钉选到~4、.NET框架版本设为v6.0,和项目版本匹配,所以后续部署代码不会出现警告。
  • 用Terraform创建Windows Function App时,如果没有显式声明运行时版本,默认配置会将Functions扩展版本钉选到~3(即v3版本运行时,对应.NET Core 3.1),和上传的.NET 6 v4版本函数代码不兼容,平台就会弹出运行时版本不受支持的警告。
  • Linux版Function App使用独立容器化运行时,会自动根据部署的代码产物识别匹配的运行时版本,不会保留默认的旧版本钉选配置,所以不会出现同类警告。
  • Azure DevOps的部署任务(不管是Zip Deploy还是自动检测模式)只会上传构建好的代码产物,不会修改Function App的平台级运行时钉选配置,所以切换部署模式无法解决问题。
修复方案

核心是修正Terraform中Windows Function App的运行时配置,不需要修改项目代码或流水线:

  • 在Terraform的Windows Function App资源配置中补全运行时参数:
    如果你用的是v3.x+版本的azurerm provider,对应azurerm_windows_function_app资源,在site_config块中添加如下配置:
    site_config {
      # 保留你已有的其他配置项
      functions_extension_version = "~4"
      dotnet_framework_version    = "v6.0"
      application_stack {
        dotnet_version = "6.0"
      }
    }
    
    注意:你的项目是in-process模型,不要把FUNCTIONS_WORKER_RUNTIME设为dotnet-isolated,保持dotnet即可。
  • 检查应用设置中是否存在冲突的配置项:如果在app_settings块里手动写了FUNCTIONS_EXTENSION_VERSION = "~3"或更低版本的配置,直接删除或修改为~4,避免和site_config中的配置冲突。
  • 执行terraform apply更新现有Function App的平台配置,配置生效后刷新Azure门户,警告会自动消失,不需要重新部署代码。

如果临时不想修改Terraform代码,也可以直接在Azure门户对应Function App的「配置-常规设置」页,手动将Functions运行时版本改为4、.NET版本改为6,保存重启应用即可临时消除警告,但后续执行terraform apply时会被重新覆盖为旧配置,因此建议将配置固化到Terraform代码中。

内容的提问来源于stack exchange,提问作者Maheswara Reddy Yarramreddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:15:44