.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
相关产品推荐
相关产品推荐

