咨询Azure无法在Windows系统下创建.NET Core 3.1 Web App的原因
我来帮你梳理下这个问题的来龙去脉——这其实是Azure平台的运行时支持策略结合UI逻辑导致的,不完全是Bug,但确实容易让人困惑:
1. Windows环境下.NET Core 3.1的支持逻辑
Azure对于Windows App Service上的.NET Core 3.1,采用的是间接支持的方式:你无法在创建流程中直接选择.NET Core 3.1 (LTS)作为Windows运行时堆栈,但可以先创建基于.NET Core 3.0的Windows Web App,之后通过部署3.1版本的应用包,或者手动调整应用设置来切换到3.1运行时。
这是因为Azure在UI层面逐步引导用户转向更新的LTS版本(比如.NET 6及以上),但保留了Windows环境对.NET Core 3.1的向下兼容部署能力——服务器侧已经预装了3.1的runtime,只要应用包符合要求就能正常运行。
2. Linux环境下的App Insights配置缺口
你提到Linux环境创建时无法配置App Insights,这属于UI体验层面的缺口,而非核心功能Bug。Linux App Service本身完全支持App Insights,只是在创建流程的UI里没有集成配置入口。你可以在Web App创建完成后,手动关联App Insights:
- 进入Web App的「监控」->「Application Insights」页面
- 点击「启用」,选择现有App Insights资源或新建即可
3. 为什么基于3.0创建的应用能正常部署3.1?
Windows App Service的运行时是动态适配的:当你部署.NET Core 3.1的应用包时,平台会自动检测应用的目标框架,并使用服务器上已安装的对应runtime运行。你用3.0创建的Web App只是提供了一个Windows环境的基础容器,后续部署3.1应用时,平台会自动切换到合适的运行时,同时App Insights的集成也不会受初始创建时的运行时版本影响。
临时解决方案建议
- 如果需要Windows环境的.NET Core 3.1 Web App,你当前的方法(先建3.0再部署3.1)完全可行,也可以通过Azure CLI直接创建,避免UI限制:
az webapp create --resource-group <你的资源组> --name <Web App名称> --plan <App Service计划名称> --runtime "DOTNETCORE:3.1" --os-type Windows - 如果选择Linux环境,创建后手动关联App Insights即可,功能不受影响。
内容的提问来源于stack exchange,提问作者Marcin Piwowarski

