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

Blazor Server集成MSAL调用API报错:无法注入IDownstreamWebApi

解决Blazor Server调用受保护API时IDownstreamWebApi未注册的问题

问题根源

VS模板自动配置认证时,可能因跨.NET版本(Blazor Server为.NET7,API为.NET8)或项目创建时的选项遗漏,未完整注册IDownstreamWebApi服务,导致依赖注入失败。

修复步骤

1. 确认NuGet包版本兼容

确保Blazor Server项目中安装的Microsoft.Identity.Web和Microsoft.Identity.Web.UI版本适配.NET7(建议使用7.x系列版本,避免直接用8.x版本,后者对应.NET8)。

2. 注册下游API服务

修改Blazor Server项目的Program.cs,在认证配置代码后添加下游API服务注册:

// 原有认证配置
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration);

// 添加下游API服务注册(整合式配置)
builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration)
    .EnableTokenAcquisitionToCallDownstreamApi()
    .AddInMemoryTokenCaches();

// 或者针对特定API单独注册(需对应appsettings.json中的配置节点)
builder.Services.AddDownstreamWebApi("YourApi", builder.Configuration.GetSection("DownstreamApi"));

3. 完善appsettings.json配置

确保配置文件中包含下游API的基础地址和权限范围:

"DownstreamApi": {
  "BaseUrl": "https://localhost:<你的API端口>/",
  "Scopes": "api://<你的API客户端ID>/access_as_user"
}

其中<你的API客户端ID>是Entra中API应用的客户端ID,<你的API端口>是Web API项目运行的端口。

4. 检查页面注入代码

确认Blazor页面中IDownstreamWebApi的注入语法正确:

[Inject]
public IDownstreamWebApi DownstreamAPI { get; set; } = default!;

为什么模板未自动配置?

可能是以下原因:

  • 创建Blazor Server项目时,未勾选「调用下游API」相关选项(部分VS模板提供该选项,用于自动添加下游API配置);
  • .NET7与.NET8跨版本组合下,模板的自动配置逻辑存在兼容性遗漏,未完整添加下游API服务注册代码。

内容的提问来源于stack exchange,提问作者Mark Evans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:04