Azure App Service部署war包到wwwroot后仍显示默认站点如何解决
Azure App Service上传War包未生效排查及解决方案
常见原因前置说明
Azure App Service Windows环境默认的Java运行时不会自动解压识别wwwroot根目录下的war包,且默认静态文件路由优先级高于Java应用路由,才会出现删除默认html文件后仍返回默认页的问题。
排查步骤
- 确认App Service运行时栈配置:登录Azure门户,进入对应App Service页面,左侧菜单选择配置->常规设置,检查堆栈设置是否匹配你使用的Java版本(如Java 8/11/17),Java web服务器栈是否选择了对应的Tomcat/Jetty版本,而非静态文件/ASP.NET等其他栈
- 确认war包上传路径:Windows环境Java应用默认的war包部署路径不是wwwroot根目录,而是
site/wwwroot/webapps目录,直接传到wwwroot根目录的war包不会被Tomcat自动识别解压 - 确认默认文档配置:进入配置->默认文档,检查是否还有残留的hostingstart.html默认项,即使删除了物理文件,部分实例缓存仍会返回默认页
- 确认应用已重启:war包上传后需要触发应用重启才会加载新的部署包,未重启时会持续运行原有默认进程
解决方案
方案1:使用标准部署路径上传
- 用WinSCP连接到App Service的FTP空间,进入
site/wwwroot/webapps目录 - 将war包重命名为
ROOT.war(需要作为根路径应用时使用),上传到该目录,等待3-5分钟让Tomcat自动解压部署 - 回到Azure门户App Service页面,点击顶部重启按钮,重启实例后再访问站点验证
方案2:修改wwwroot映射配置
如果必须部署在wwwroot目录,可修改web.config配置:
- 在wwwroot目录下新建
web.config文件,写入以下内容(适配Tomcat环境):
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> </handlers> <httpPlatform processPath="%AZURE_TOMCAT_HOME%\bin\startup.bat" arguments="" stdoutLogEnabled="false" startupTimeLimit="3600" startupRetryCount="3" /> </system.webServer> </configuration>
- 将war包上传到wwwroot目录,重启应用后生效
方案3:清理缓存强制刷新
如果上述操作后仍显示默认页:
- 进入App Service的高级工具(Kudu),点击调试控制台->CMD,进入
site/wwwroot目录,确认所有默认html文件已删除 - 进入
%TEMP%目录,删除所有Tomcat临时缓存文件 - 本地访问站点时按
Ctrl+Shift+R强制刷新浏览器缓存,避免本地缓存返回旧页面
内容的提问来源于stack exchange,提问作者Vamsi Krishna
相关产品推荐
相关产品推荐

