java - 使用 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-zip和https://docs.microsoft.com/en-us/azure/app-service/configure- language-java?pivots=platform-windows但他们似乎没有告诉我任何我不知道的事情。
解决方案
通过在我的应用程序中转储环境,我发现 Azure 将环境变量 SERVER_PORT 设置为一个数字,并且如果您监听该数字,则请求会正确转发。它实际上将相当多的环境变量设置为相同的端口号,但我选择了 SERVER_PORT,因为它看起来像最有意义的名称,并且在各种博客等中都有一些引用。HTTP_PLATFORM_PORT 也设置了。
我仍然会感谢对 Microsoft 官方文档的任何引用,所以至少我知道是否有“正确”的方法来做到这一点。
推荐阅读
- php - 如何通过 FPDI 将外部 pdf 文件作为附加页面添加到 TCPF
- sql - 使用 ssrs,我需要将 0 替换为 - 并将 1 替换为 +
- angular - *ngFor 绑定服务器响应后不更新
- allennlp - 在配置中传递损失函数和指标
- forms - 如何验证值更改的文本字段?
- flutter - Flutter - 在选项卡之间移动导致丢失状态
- node.js - 如何从本地磁盘发送带有 FileAttachment 的电子邮件
- python - 在 python 中处理 json.loads() 值错误
- c++ - 为什么在使用 prinft() 和 string::c_str() 打印输出时,程序中定义的 std::string 不等于从文件加载的 std::string?
- php - 通过单击 HTML div 带参数的 PHP 调用函数