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

.NET 6 Razor Pages无法解析MicrosoftIdentityConsentAndConditionalAccessHandler服务

解决.NET 6 Razor Pages中MicrosoftIdentityConsentAndConditionalAccessHandler无法解析的问题

问题原因

MicrosoftIdentityConsentAndConditionalAccessHandler是Microsoft Identity Web UI组件的一部分,当前配置未注册该组件所需的服务,导致依赖注入容器无法解析该类型。

解决方案

1. 补充Program.cs中的服务注册

在现有认证配置代码后,添加Razor Pages服务注册并启用Microsoft Identity UI支持:

string[] initialScopes = builder.Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');

builder.Services
    .AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
    .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
    .AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApi"))
    .AddInMemoryTokenCaches();

// 新增:注册Razor Pages并启用Microsoft Identity UI
builder.Services.AddRazorPages()
    .AddMicrosoftIdentityWebUI();

2. 修正中间件顺序

在app.Run()之前,严格按以下顺序添加中间件:

app.UseAuthentication();
app.UseAuthorization();

app.MapRazorPages();
app.MapControllers(); // 必须添加,Microsoft Identity UI依赖控制器路由

app.Run();

3. 验证配置完整性

确保appsettings.json包含正确的Azure AD和Microsoft Graph配置:

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "your-domain.com",
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id",
    "CallbackPath": "/signin-oidc"
},
"DownstreamApi": {
    "BaseUrl": "https://graph.microsoft.com/v1.0",
    "Scopes": "user.read user.readbasic.all"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:45:39