Azure Web App发布配置框架异常及Blazor部署疑问
先给你明确结论:这两个现象都是正常的,背后是Blazor WebAssembly应用的特殊架构导致的,下面分别拆解原因:
1. 发布配置文件显示netstandard2.1而非netcoreapp3.0的原因
你用.NET Core 3.1 CLI创建的Blazor WebAssembly App,它的项目目标框架默认就是netstandard2.1——这是因为在.NET 5版本之前,Blazor WebAssembly还没有独立的专属目标框架标识,它依赖netstandard2.1来定义API兼容范围,同时会在发布时打包浏览器可运行的.NET WASM运行时环境。
你可以打开项目的.csproj文件确认,里面的TargetFramework节点应该是:
<TargetFramework>netstandard2.1</TargetFramework>
所以VS2019导入Azure发布设置后,显示netstandard2.1是完全符合项目实际配置的,不用纠结。
2. App Service常规设置显示.NET Framework V4.7的原因
Blazor WebAssembly是纯客户端应用,所有代码都在浏览器中运行,部署到Azure App Service时,本质上是把它当作静态网站来托管——App Service只需要提供静态文件的HTTP服务即可,不需要依赖服务器端的.NET Core运行时。
而Azure App Service的Windows计划默认托管环境基于IIS,IIS本身依赖.NET Framework,所以常规设置里显示的.NET Framework V4.7是服务器端的运行时环境,和你的Blazor WebAssembly应用没有直接关联,完全不会影响应用的正常运行。
如果想让堆栈显示更贴合你的应用,你可以在App Service配置里把运行时堆栈改成静态网站,或者Linux计划下选择合适的静态托管堆栈,但这只是显示层面的调整,对功能没有影响。
内容的提问来源于stack exchange,提问作者Kamil Turowski

