【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 解决方案,功夫不负有心人,我们 ...
随机推荐
- [转贴]使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
使用dbstart 和dbshut 脚本来自动化启动和关闭数据库 https://www.cnblogs.com/snowers/p/3285281.htmldbshut 和 dbstart 使用db ...
- Linux平台下面部署node npm 等工具软件
公司这边用到了运行时定制, 用的是angular 开发的. 所以需要在linux 里面安装 angular的相关工具. 需要在服务器上面有angular nodejs 还有jit的工具 然后 运行时定 ...
- echarts更改x和y轴的颜色
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 从零开始配置 vim(9)——初始配置
虽然本系列文章叫做从0开始配置vim,似乎我们从一开始就要写vimrc配置文件,但是我们并没有这么做.我们先经过几篇文章了解了下面的几个内容 如何设置vim属性,从而改变vim的特征 配置快捷键,以提 ...
- 人工智能的新篇章:深入了解大型语言模型(LLM)的应用与前景
人工智能的新篇章:深入了解大型语言模型(LLM)的应用与前景 LLM(Large Language Model)技术是一种基于深度学习的自然语言处理技术,旨在训练能够处理和生成自然语言文本的大型模型. ...
- 3.2 Windows驱动开发:内核CR3切换读写内存
CR3是一种控制寄存器,它是CPU中的一个专用寄存器,用于存储当前进程的页目录表的物理地址.在x86体系结构中,虚拟地址的翻译过程需要借助页表来完成.页表是由页目录表和页表组成的,页目录表存储了页表的 ...
- Python 字符串与字节数组转换
整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: int('0x10', 16) ==> 16 类似的还有oct(), bin() 字符串 ...
- 求助:Docker怎么连接mongoDB?
首先 在playwithDocker中通过docker pull mongo引入mongo 然后创建容器 docker run -it --name mymongo -p 27017:27017 -v ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第7章)-- 读书笔记(中)
第 7 章 高级主题 7.2 并发 当两个用户获取同一个资源后,再同时修改该资源,就会导致并发问题 常见实现并发的方法有以下两种: 保守式并发控制,每次修改资源,都锁定资源 开放式并发控制,每次修改资 ...
- MyBatis踩坑之单字符条件比较
背景 Mybatis中可以使用 <choose><when>...</when></choose> 语句来实现条件选择,<when> 标签含 ...
