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

NET 6下ASP.NET Core Razor Pages报Scheme already exists: Cookies错误求助

解决ASP.NET Core中"Scheme already exists: Cookies"错误

问题原因

你手动调用AddCookie注册了名为Cookies的认证方案,但AddMicrosoftIdentityWebApp(微软身份验证库)内部已经默认注册了同名的Cookie认证方案,导致方案重复冲突。

修正后的配置代码

直接通过ConfigureCookie方法修改微软身份验证库自带的Cookie方案配置,无需单独调用AddCookie:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        builder.Configuration.GetSection("AzureAd").Bind(options);

        options.NonceCookie.SecurePolicy = CookieSecurePolicy.Always;
        options.CorrelationCookie.SecurePolicy = CookieSecurePolicy.Always;
    })
    // 配置默认Cookie认证方案的选项
    .ConfigureCookie(options =>
    {
        options.ExpireTimeSpan = TimeSpan.FromSeconds(1);
    })
    .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
    .AddMicrosoftGraph(builder.Configuration.GetSection("DownstreamApi"))
    .AddInMemoryTokenCaches();

builder.Services.AddRazorPages()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizeFolder("/");
    })
    .AddMicrosoftIdentityUI();

注销代码优化

你的注销代码无需手动删除Cookie,调用SignOutAsync已经会自动清除对应认证Cookie,建议修改为:

await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);

内容的提问来源于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 07:07:18