首页 > 解决方案 > 使用 Windows 应用服务计划部署到 Azure 应用服务时,Java Web 应用不响应 HTTP 请求

问题描述

我已经构建了一个简单的网络应用程序java -jar app.jar。它查看环境变量PORT来决定监听哪个端口。现在我想用 Windows 应用服务计划将它部署到 Azure,这被称为 Azure 中的“Java SE 部署”。

在 Linux 应用服务计划中,我可以简单地部署 app.jar 文件(使用 vs code 插件、zipdeploy 或其他),设置环境变量 PORT,一切都很好。

使用 Windows 应用服务计划,尝试访问应用会出现 500 错误,正文为“Web 服务器未能在指定时间内响应”。我已经打开了所有的日志记录,我可以看到请求进入 IIS,但没有迹象表明它试图将请求发送到我的应用程序。

但是,我可以使用curl http://localhost:<port>. 所以我知道它已经启动了。

我已经完成了本教程https://docs.microsoft.com/en-us/azure/app-service/quickstart-java?tabs=javase&pivots=platform-windows工作正常,但我没有使用 maven 或 spring boot - 我需要自己构建 jar 文件。

我已阅读https://docs.microsoft.com/en-us/azure/app-service/deploy-ziphttps://docs.microsoft.com/en-us/azure/app-service/configure- language-java?pivots=platform-windows但他们似乎没有告诉我任何我不知道的事情。

标签: javaazureazure-deployment

解决方案


通过在我的应用程序中转储环境,我发现 Azure 将环境变量 SERVER_PORT 设置为一个数字,并且如果您监听该数字,则请求会正确转发。它实际上将相当多的环境变量设置为相同的端口号,但我选择了 SERVER_PORT,因为它看起来像最有意义的名称,并且在各种博客等中都有一些引用。HTTP_PLATFORM_PORT 也设置了。

我仍然会感谢对 Microsoft 官方文档的任何引用,所以至少我知道是否有“正确”的方法来做到这一点。


推荐阅读