【Azure Function App】解决Function App For Container 遇见ServiceUnavailable的异常
问题描述
在使用Terraform创建Function App 后,部署函数时候遇见 ServiceUnavailable (Bad Request -- Encountered an error (ServiceUnavailable) from host runtime.) 问题。
查看Function App的高级工具(Kudu)站点和默认站点,均出现 Application Error页面。

问题解答
查看Function App的Azure管理页面,有提示错误消息“ Configure Container Settings “ , 但是点击后,却没有任何反应, 无法查看具体的消息.

然后查看Function App的部署中心页面, 也是没有任何信息输出,页面空白。
根据此处判断,UI上一定有JS错误,所以启用浏览器开发者模式(F12),查看Console中的错误信息。发现报错:Incorrect fxVersion set in the site config: DOCKER。

判断出,是Function App for Container关于DOCKER的配置错误,所以对比一个正确的Function App Container发现关键信息为:

因为对LinuxFxVersion的配置只说明了DOCKER,没有指定正确的Image 路径,所以Function App 无法加载部署中心,同时也无法正确的运行DOCKER指令和Kudu站点。
解决办法
通过az functionapp config set 指令,修改 --linux-fx-version的值,如:
az functionapp config set
--name <FUNCTION_APP>
--resource-group <RESOURCE_GROUP>
--linux-fx-version --% "DOCKER|mcr.microsoft.com/azure-functions/dotnet:4-appservice-quickstart"
(For Windows)注意:因为在Powershell中 ”|“是终止符,所以如果没有特殊说明,执行上面的语句会下面的错误:
'mcr.microsoft.com' is not recognized as an internal or external command, operable program or batch file.
所以,需要加上 停止分析 (
--%) 标记来阻止 PowerShell 将输入解释为 PowerShell 命令:
或者是在Terraform中对linux-fx-version赋予完整的值。
linux_fx_version- (Optional) Linux App Framework and version for the AppService, e.g.DOCKER|(golang:latest).
修改后,Function App页面恢复正常。

参考资料
Pin to a specific version on Linux: https://learn.microsoft.com/en-us/azure/azure-functions/set-runtime-version?tabs=portal#manual-version-updates-on-linux
Terraform设置Function App Linux fx version:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/function_app#linux_fx_version
【Azure Function App】解决Function App For Container 遇见ServiceUnavailable的异常的更多相关文章
- TypeError: Object function (req, res, next) { app.handle(req, res, next); } has no method 'configure'
TypeError: Object function (req, res, next) { app.handle(req, res, next); } has no method 'configure ...
- Fatal error: Call to undefined function imagettftext()解决办法
Fatal error: Call to undefined function imagettftext()解决办法 我的问题是php编译安装时指定了gd的目录,其实不用指定.就可以了 博客分类: ...
- ios app 解决微信扫二维码不能跳转问题
<script> (function(){ // Setup GA (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i ...
- 在Azure上部署IPv6的App通过IOS App Store审核
随着中国企业出海Go Global,越来越多的用户开始在Global Azure部署自己的应用.由于对Global Azure功能和文档的不熟悉,使用过程中或多或少遇到了一些坑.事实上呢,这些并不是坑 ...
- 百度地图API详解之事件机制,function“闭包”解决for循环和监听器冲突的问题:
原文:百度地图API详解之事件机制,function"闭包"解决for循环和监听器冲突的问题: 百度地图API详解之事件机制 2011年07月26日 星期二 下午 04:06 和D ...
- 解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
React-Native 开发的项目,Android 方面没有任何问题,IOS 就是无法跑起来,报错信息如下: mac 10.14.4 xcode 10.2.1 error Failed to bui ...
- 【Loadrunner】Error -26601: Decompression function 错误解决、27728报错解决方案
一. Error -26601: Decompression function 错误解决 Action2.c(30): Error -26601: Decompression function ...
- jquery报.live() is not a function的解决方法
jquery报.live() is not a function的解决方法: jquery中的live()方法在jquery1.9及以上的版本中已被废弃了,如果使用,会抛出TypeError: $(. ...
- $http.get(...).success is not a function 错误解决
$http.get(...).success is not a function 错误解决 1.6 新版本的AngularJs中用then和catch 代替了success和error,用PRomis ...
- 解决function.bind()方法
这个 bind 方法只有在 ie10 版本的浏览器才得到原生支持,低于该版本的浏览器下执行时会得到一个 undefined 的错误提示. 于是只好再次上网 google 解决方案,功夫不负有心人,我们 ...
随机推荐
- 程序调试利器——GDB使用指南
作者:京东科技 孙晓军 # 1\. GDB介绍 GDB是GNU Debugger的简称,其作用是可以在程序运行时,检测程序正在做些什么.GDB程序自身是使用C和C++程序编写的,但可以支持除C和C++ ...
- 爬虫逆向基础,认识 SM1-SM9、ZUC 国密算法
关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! [01x00] 简介 国密即国家密码局认定的国产加密算法,爬虫工程师在做 JS 逆向的时候,会遇 ...
- [置顶] k8s,docker,微服务,监控
综合 第一篇:k8s服务A内部调用服务B的方式 第二篇:go-zero grpc 第一篇:grpc,protobuf安装 第二篇:grpc签发证书 第三篇:golang-grpc 第四篇:python ...
- Windows 10 关闭搜索栏中“热门搜索”的显示。
Windows 10 关闭搜索栏中"热门搜索"的显示. 任务栏取消"显示搜索突出显示"的设置可能无法取消"热门搜索"的显示, 这就需要您尝试 ...
- Mysql索引失效场景
Mysql索引失效场景 序言 众所周知在Mysql中,通过使用索引的方式可以加快查询速度,从而避免全文搜索:而索引本身就像图书馆中所有书籍目录,通过查询关键字就能快速找到目标书籍在几列几行,这 ...
- C++ Qt开发:运用QJSON模块解析数据
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QJs ...
- MySQL 字符串与时间操作函数
MariaDB [lyshark]> select Name,char_length(Name) from lyshark; -- 求字符串长度 +------------+---------- ...
- Linux的守护进程 [补档-2023-08-10]
12-1守护进程 12-1-1介绍 Daemom是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或者事件.这些进 程一般不直接和用户交互,不受用户的登录,注销等影响.没 ...
- Vulkan学习苦旅02:看不见的窗口(创建VkInstance与VkSurfaceKHR)
在上一节中,我们搭建了学习Vulkan所需的环境.今天,我们将会初步了解"地图"顶层的内容. 如图所示,"地图"的顶层有两个模块: Instance和Surf ...
- 云计算 - 对象存储服务OSS技术全解
本文全面深入地探讨了对象存储服务(OSS)的核心技术.基础知识和高级功能.从媒体存储到数据备份,再到数据仓库与数据湖,我们不仅解析了OSS在各种应用场景下的关键角色,还深入讨论了其与机器学习.多媒体处 ...
