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

未注册Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider服务排查

发布到Azure后出现HTTP 500错误,回退NuGet预发布包后问题解决

本地运行正常,但发布到Azure后打开网站时出现HTTP 500错误,起初怀疑是Startup类中缺少某个服务。此前使用过预发布版NuGet包,回退至旧版本后该错误消失。

Startup.cs 代码

using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;

namespace AppOwnsData
{
    using AppOwnsData.Models;
    using AppOwnsData.Services;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
            
        }

        public IConfiguration Configuration { get; }
        
        // 此方法由运行时调用,用于向容器添加服务
        public void ConfigureServices(IServiceCollection services)
        {
            // 从配置文件(appsettings.json)中获取作用域
            var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
            
            // 添加Microsoft登录支持
            services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

                // 添加获取令牌以调用受保护Web API的能力
                .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // 允许控制器和页面通过依赖注入获取GraphServiceClient
                // 并使用内存令牌缓存
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddDistributedTokenCaches();
            
            
            
            
            // 注册AadService、PbiEmbedService和PowerBiServiceApi以支持依赖注入
            services.AddScoped(typeof(AadService))
                    .AddScoped(typeof(PbiEmbedService))
                    .AddScoped(typeof(PowerBiServiceApi));

            services.AddControllersWithViews(options =>
            {
                var policy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();
                options.Filters.Add(new AuthorizeFilter(policy));
            });

            // 启用登录和登出的UI及控制器
            services.AddRazorPages()
                .AddMicrosoftIdentityUI();

            // 将appsettings.json中的配置加载到C#模型类中
            services.Configure<AzureAd>(Configuration.GetSection("AzureAd"))
                    .Configure<PowerBI>(Configuration.GetSection("PowerBI"));
            
            /*// 添加处理声明挑战的UI支持
            services.AddServerSideBlazor()
                .AddMicrosoftIdentityConsentHandler();*/
        }

        // 此方法由运行时调用,用于配置HTTP请求管道
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // 默认HSTS值为30天,生产环境中可能需要调整
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

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

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });
        }
    }
}

Azure Application Insights 中的错误调用栈

System.InvalidOperationException:
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
at Microsoft.Identity.Web.GraphServiceCollectionExtensions+<>c.b__1_0(Microsoft.Identity.Web.MicrosoftGraph, Version=2.0.6.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:10:37