You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无服务器Blazor WASM客户端项目中通过Razor Pages返回JSON

可以用Razor Pages实现Blazor WASM返回JSON格式应用信息吗?

完全可以,具体实现方式取决于你的项目结构:

情况1:Blazor WASM为ASP.NET Core托管模式(带Server项目)

这种场景下,Server项目本身就是ASP.NET Core应用,无需额外搭建独立服务器,直接通过Razor Pages即可实现JSON接口:

  1. 确保Server项目启用Razor Pages
    在Server项目的Program.cs中配置服务和中间件:
builder.Services.AddRazorPages();

// 中间件配置环节添加
app.MapRazorPages();
  1. 创建返回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);
    }
}
  1. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 12:05:28