Blazor WebApp客户端:无法解析IAccessTokenProvider服务求助
解决“No service for type IAccessTokenProvider has been registered”错误
1. 安装必要依赖包
- 若为Blazor WebAssembly项目:确保已安装
Microsoft.AspNetCore.Components.WebAssembly.AuthenticationNuGet包。 - 若为ASP.NET Core MVC/Razor Pages或Blazor Server项目:安装
IdentityModel.AspNetCore包,执行命令:Install-Package IdentityModel.AspNetCore
2. 注册AccessToken服务
在Program.cs中添加对应配置:
- Blazor WebAssembly:通过OIDC认证注册自动引入
IAccessTokenProvider:builder.Services.AddOidcAuthentication(options => { builder.Configuration.Bind("DuendeDemo", options.ProviderOptions); }); - MVC/Blazor Server:显式注册AccessToken管理服务:
builder.Services.AddAccessTokenManagement();
3. 验证HttpClient与Handler配置
确保自定义CustomAuthorizationMessageHandler正确注入IAccessTokenProvider,且HttpClient注册时关联该Handler:
builder.Services.AddHttpClient("RemoteApi", client => { client.BaseAddress = new Uri("https://demo.duendesoftware.com/api/"); }) .AddHttpMessageHandler<CustomAuthorizationMessageHandler>();
补充检查
- 确认OIDC配置中
response_type包含code,并请求了API所需的scope(比如api或具体的API权限范围)。 - Blazor Server项目需确保页面/组件已导入相关命名空间(如
IdentityModel.AspNetCore.AccessTokenManagement)。
内容的提问来源于stack exchange,提问作者Mohaaron
相关产品推荐
相关产品推荐

