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

BaseAddressAuthorizationMessageHandler服务未找到错误的解决求助

解决「No service for type 'Microsoft.AspNetCore.Components.WebAssembly.Authentication.BaseAddressAuthorizationMessageHandler'」错误

问题根源

你误用了Blazor WebAssembly专属的BaseAddressAuthorizationMessageHandler,这个组件仅适用于客户端Blazor应用的身份认证场景。而你的项目是传统ASP.NET Core MVC应用(基于Windows Identity/Negotiate认证),既没有引入Blazor WASM的身份认证包,也不需要这个处理器,所以DI容器找不到对应的服务。

解决方案

替换掉错误的消息处理器,改用服务器端ASP.NET Core传递Windows身份凭据的标准方式:通过HttpClientHandler开启UseDefaultCredentials,让HttpClient调用API时自动携带当前登录用户的Windows凭据。

具体代码修改

修改ServiceCollectionExtensions.cs中AddHttpClient的配置,移除AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>(),替换为配置HttpClientHandler:

serviceCollection.AddHttpClient<UploadRulesClient>("ServerAPI", (httpClient) =>
{
    httpClient.BaseAddress = new Uri(configuration["AuraApiClient:BaseAddress"]);
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    // 启用默认凭据,自动传递当前Windows用户身份
    UseDefaultCredentials = true
});

serviceCollection.AddHttpClient<ScenarioZipFilesClient>("ServerAPI",(httpClient) =>
{
    httpClient.BaseAddress = new Uri(configuration["AuraApiClient:BaseAddress"]);
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    UseDefaultCredentials = true
});

额外注意事项

  1. 确保API端已正确配置Windows身份认证(启用Negotiate/NTLM),并且WebApp与API处于同一域或已建立信任关系,避免Kerberos/NTLM身份传递失败。
  2. 检查你的API授权策略是否允许当前用户的角色/身份访问对应的接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:27:18