问题描述 在使用Azure Function App的SendGrid Binging功能,调用SendGrid服务器发送邮件功能时,有时候遇见间歇性,偶发性异常.在重新触发SendGrid部分的Function,又能正常运行.所以本文基于Azure Function使用SendGrid的异常错误消息日志,一步一步,分析源码中的调用.然后调查为什么Azure Function没有自动Retry呢? (如需要参考如何使用Azure Function SendGrid,参考:Azure Functi…
问题描述 如何在一个AppService下同时部署运行多个Java 应用程序呢? 问题解答 因为App Service的默认根目录为 wwwroot.如果需要运行多个Java 应用程序,需要在 wwwroot目录中创建独立文件夹,用于部署 Jar包 和 web.config 文件,特别注意的时:需要在web.config中指定jar包的启动指令. 如正常部署一个jar包,App Service 根目录下的文件结构如下: web.config内容为: <?xml version="1.0&q…
问题描述 在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9? 当App Service创建号值后,并且在门户上设置PHP Version版本位 PHP 7.4, 然后进入Kudu站点中,进入 C:\home\sites\wwwroot目录中,创建一个index.php 文件,文件内容为: <?php echo "Hello World! This i…
问题描述 当需要在应用中有大量的出站连接时候,就会涉及到SNAT(源地址网络转换)耗尽的问题.而通过Azure App Service/Function的默认监控指标图表中,却没有可以直接查看到SNAT是否耗尽的问题(可以间接参考App Service Plan级中Metrics的 Socket Outbound All指标,但是由于它是整个Plan下所有App Service的汇总数据,不能直接表明SNAT是否超过128的限制). 这里所说的出站连接如:SQL数据库, Redis缓存以及其他的…
问题描述 使用PowerShell脚本执行获取Azure订阅列表的指令(Get-Azsubscription -TenantId $tenantID -DefaultProfile $cxt).在本地调试后,指令成功运行. 但是当指令并运行在Azure Function时,则出现了异常: 详细的异常信息为 完成的错误信息为: "Error getting value from 'Tags' on 'Microsoft.Azure.Commands.Profile.Models.PSAzureSu…
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用户 生成报表等 由于使用 SendGrid 这样的第三方邮件服务既稳定可靠又不用自己维护邮件服务器,并且对于邮件发送量不大的应用,免费发送的邮件数 (每个月25000封)已经可以满足需求.所以越来越多的应用都开始使用这种邮件服务来发送邮件. 下面我们从 Azure 上创建 SendGrid 账号开始…
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递.并且具有可扩充性和实时分析的能力.常见的用例有:1. 自动回复用户的邮件2. 定期发送信息给用户3. 生成报表等 由于使用 SendGrid 这样的第三方邮件服务既稳定可靠,又不用自己维护邮件服务器.并且对于邮件发送量不大的应用,免费发送的邮件数 (每个月 25000 封)已经可以满足需求.所以越来越多的应用都开始使用这种邮件服务来发送邮件.下面我们从 Azure 上创建 SendGr…
问题描述 在上篇博文"[Azure 应用服务]App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)"中,实现了通过 HTTP 方式访问部署在Azure App Service For Linux上的Python Flask Web Socket项目, 但是当使用HTTPS访问时候,socket.io所发送的GET请求都能正常. HTTP 成功 HTTPS 失败 但是POST请求全部返回400 Bad Request 那么,如何…
问题描述 经过前两篇文章,分别使用VM搭建了Kafka服务,创建了Azure Function项目,并且都在本地运行成功. [Azure Developer]在Azure VM (Windows) 中搭建 kafka服务,并且通过本地以及远程验证 发送+消费 消息 [Azure 应用服务]本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验 现在,本文中将把Kafka Trigger Function代码部署到Azur…
测试App Service是否可以访问其他DNS 当应用服务(Azure App Service)创建完成后,想通过ping命令来查看是否可以访问其他站点或解析DNS,但是发现ping命令无法使用.这是因为App Service存在安全约束,因此无法通过控制台运行 ping.nslookup 和 tracert 工具 .为了测试DNS功能和测试主机TCP的连接问题,App Service 提供了两个命令 nameresolver.exe 用于测试 DNS 功能,命令格式为:nameresolve…
欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的服务器端和客户端应用逻辑. 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器. 与新式托管平台(如 Docker)集成. 任务描述 使用VS2019模板创建Blazor项目,添加Dockerfile打包为Linux镜像,最后发布到Azure应用服务, 并查看镜像的发布日志…
问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 Java 的 web.xml 进行配置 error-page,具体内容如下: <?xml version="1.0" encoding="utf-8" ?> <web-app xmlns="http://xmlns.jcp.org/xml/ns…
问题描述 Azure PaaS服务是否有FTP/S服务呢? 回答问题 应用服务(Web App/App Service)在创建时候,默认创建了FTP服务并自动开启,用于应用部署.但它不是适合作为FTP文件服务器,如果需要存储文件,可以使用Azure 存储服务(Stroage Account). 如何登录到App Service的FTP呢? 方式一:在App Service的Overview页面,可以查看到FTP的主机名,而连接的Username以及Password 可以在Get publish…
问题描述 App Service 在使用GIt本地部署,上传代码的路径为/home/site/repository,而不是站点的根目录/home/site/wwwroot. 这个是因为什么? 并且通过Git发布静态文件的时候不成功.出现"Could not detect any platform in the source directory." 和 "Error: Couldn't detect a version for the platform 'php' in the…
一切为了安全,所有的云上资源如支持内网资源访问,则都可以加入虚拟网络 问题描述 使用Azure Function处理Storage Account中Blob 新增,更新,删除等情况.Storage Account启用虚拟网络中的服务终结点(Service Endpoint)后,可以实现只能从内网访问.同时,Azure Function也支持集成内网.并且可支持在虚拟网络中被Storage Account所触发.所以根据门户中一步一步的操作,配置完Azure Function和Storage Ac…
问题描述 App Service 服务URL无法访问,进入门户中的Advanced Tools(Kudu).App Service Editor (Preview)等页面无法打开, 打开就出现 The service is unavailable 错误. 问题排查和解决 由于无法打开高级工具(Kudu)并收集当前应用的日志,而根据错误消息"The service is unavailable"表明后端Host当前App Service的虚拟机实例出现了问题,那么可以通过人为的操作来改变…
通过Azure App Service门户,启用Health Check来监视应用服务的实例,当发现其中一个实例处于不健康(unhealthy)状态时,通过重新路由(即把有问题的实例从负载均衡器中移除, Load Balancer)的方式把请求发送到健康的实例上.并且如果不健康的实例一直存在问题,系统则会启动一个新实例来替换不健康的这个实例. This article uses Health check in the Azure portal to monitor App Service ins…
问题描述 Azure Function HTTP 触发后, 230秒就超时,而其他方式触发的Function, 执行5分钟后也超时,如何调整超时时间? 问题分析 查阅官方文档,对函数应用超时持续时间有详细介绍:最新的3.X版本的默认值根据Function计划的类型不同而不同,默认的最少为5分钟,最大30分钟.消耗计划的Function最大可调整为10分钟,而其他两种无限制. 但是,非常非常重要的一点是:如果Function是HTTP触发类型.它的响应时间最大最大就是230秒. 这是因为 Azur…
问题描述 在.Net Core 5.0 项目中,添加 Microsoft.Extensions.Logging.AzureAppServices 和 Microsoft.Extensions.Logging.Abstractions插件,并且在项目中添加  logging.AddAzureWebAppDiagnostics() return Host.CreateDefaultBuilder(args) .ConfigureLogging(logging => { //logging.AddCo…
问题描述 通过Docker Desktop for Linux,配置Nginx镜像后,自定义nginx.conf文件,修改启动目录和对 /out 路径的反向代理到博客园的博文地址 (https://www.cnblogs.com/lulight/p/15180884.html), 然后部署到Azure App Service中的整体实现方案. 操作步骤(共5步) 第 0 步:启动本地 Docker Desktop,并拉取Nginx 镜像 # 1. pull nginx image ... nee…
问题描述 当创建一个App Service 后,运行时环境和版本选择Windows 和 Python 3.6. 登录Kudu 站点查看,默认的文件有 web.config, hostingstart-python.py, hostingstart-python.html,  在配置文件中,通过pythonpath来指定启动目录,而 WSGI_HANDLER 则指定启动的py文件为 hostingstart-python.py. web.config <configuration> <ap…
问题描述 参考官方文档部署 PHP Laravel 项目到App Service for Linux环境中,但是访问应用时候遇见了500 Server Error 错误. 从部署的日志中,可以明确看出部署是成功的,那么为什么启动页面不成功呢? 问题分析 Laravel 应用程序生命周期在 public 目录中开始,而不是在应用程序的根目录(wwwroot)中开始.在Azure App Service中,所有项目的默认根目录都是wwwroot. 但是可以使用 .htaccess 来重写所有请求,使…
问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linux的环境中如何抓取网络包呢? 抓取Windows的网络包可参考博文:[应用服务 App Service]App Service中抓取网络日志 问题解决 通过SSH方式登录到Linux实例,使用tcpdump的工具抓取网络包, 通过IP地址和端口443来进行过滤,生成的网络包写入到tmp目录下的 ap…
编写Java Spring Boot应用,通过配置logging.path路径把日志输出在指定的文件夹中. 第一步:通过VS Code创建一个空的Spring Boot项目 第二步:在application.properties中添加输入日志的级别和指定路径 logging.path=mylogs logging.level.root= INFO logging.level.org.springframework.web= INFO logging.level.org.springframewo…
问题描述 总所周知,Azure App Service服务会默认提供一个 ***.chinacloudsites.cn为后缀的域名,但是该域名由上海蓝云网络科技有限公司备案,仅用于向其客户提供 Azure 服务. 而如果不进行ICP备案,任何通过公网流量访问默认域名都会被封堵.因为Azure后台会根据对默认域名的请求次数和频率自动扫描,如果被扫中,就会被封堵.所以为了避免这样的情况,所以需要禁止任何人使用默认域名访问! 问题分析 方式一:使用IIS的rewrite规则,发现访问的时默认域名,返回…
问题描述 App Service for Linux 资源创建完成后,通过FTP方式把 .jar包(logdemo.jar)包上传到 /site/wwwroot/ 文件夹后,在App Service的Configration 配置页面配置启动命令为: java -jar /site/wwwroot/logdemo.jar 但是,在访问App Service时,却是 Application Error 错误 (503 Service Temporarily Unavailable) 问题解决 第一…
问题描述 编写Powershell Function,登录到China Azure并获取Azure AD User信息,但是发现遇见了 [Error] ERROR: ManagedIdentityCredential authentication failed: An unexpected error occured while fetching the AAD Token. Please contact support with this provided Correlation IdStat…
问题描述 因为中国区的App Service对外(公网访问)需要进行ICP备案,所以很多情况下,Web应用部署到App Service后,都是通过Application Gateway(应用程序网关)来对外网暴露,提供公网访问. 上图列出了使用Application Gateway后,外网访问App Service的示意图. 如果直接访问,则会出现403的错误页面. 那么,在这样的情况下,我们如何来实现通过公网暴露Git的URI,实现外网成功部署App Service的代码呢? 问题解答 当然,…
问题描述 在上一篇博文 "[Azure 应用服务]NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤"中,实现了登录,并获取登录用户在AAD中的个人信息,但是没有一个显示的方法输出所获取到的Access Token,则通过新建Express项目,加载MSAL的代码实现此目的. 实现步骤 第一步:创建 NodeJS Express项目,并添加@azure/msal-node 项目包 前提条件:安装 Node.js…
问题描述 在前两篇博文中,对NodeJS Express应用 使用MSAL + AAD实现用户登录并获取用户信息,获取Authorization信息 ( ID Token, Access Token). [Azure 应用服务]NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤 [Azure 应用服务]NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireT…