如何在无服务器Blazor WASM客户端项目中通过Razor Pages返回JSON
可以用Razor Pages实现Blazor WASM返回JSON格式应用信息吗?
完全可以,具体实现方式取决于你的项目结构:
情况1:Blazor WASM为ASP.NET Core托管模式(带Server项目)
这种场景下,Server项目本身就是ASP.NET Core应用,无需额外搭建独立服务器,直接通过Razor Pages即可实现JSON接口:
- 确保Server项目启用Razor Pages
在Server项目的Program.cs中配置服务和中间件:
builder.Services.AddRazorPages(); // 中间件配置环节添加 app.MapRazorPages();
- 创建返回JSON的Razor Page
在Server项目的Pages文件夹下新建AppInfo.cshtml,并编写对应的代码隐藏文件AppInfo.cshtml.cs:
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace YourProject.Server.Pages; public class AppInfoModel : PageModel { public IActionResult OnGet() { var appInfo = new { AppName = "Blazor WASM应用", Version = "1.0.0", Environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production", CurrentUtcTime = DateTime.UtcNow }; return new JsonResult(appInfo); } }
- Blazor客户端调用接口
在Client项目中通过HttpClient请求该接口:
@inject HttpClient Http <p>应用名称: @AppInfo?.AppName</p> <p>版本号: @AppInfo?.Version</p> @code { private dynamic? AppInfo { get; set; } protected override async Task OnInitializedAsync() { AppInfo = await Http.GetFromJsonAsync<dynamic>("AppInfo"); } }
情况2:Blazor WASM为纯独立部署模式(无Server项目)
Razor Pages是服务器端技术,依赖ASP.NET Core运行时,纯独立WASM项目无法直接使用。此时可替代方案:
- 将项目转换为ASP.NET Core托管模式(仅需添加Server项目,无需额外服务器)
- 直接在客户端读取本地配置或通过反射获取应用信息:
using System.Reflection; <p>应用版本: @AppVersion</p> @code { private string? AppVersion { get; set; } protected override void OnInitialized() { AppVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString(); } }
内容的提问来源于stack exchange,提问作者SujeshKC
相关产品推荐
相关产品推荐

