8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用 WebApplicationFactory 进行基准测试

Nidhin Paul 2月前

99 0

我在登录时遇到问题,不知道该怎么办。我很确定这与我的程序有关。cs:使用 MudBlazor.Services;使用 Microsoft.AspNetCore.Authentication.OpenIdConnect;使用

我在登录时遇到问题,不知道该怎么办。我很确定这与我的 program.cs 有关:

using MudBlazor.Services;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
using Serilog;
using System.Configuration;


internal class Program
{
    private static void Main(string[] args)
    {
        WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

        Log.Logger = new LoggerConfiguration()
            .WriteTo.Console()
            .CreateBootstrapLogger();
        Log.Information("App started");

        builder.Host.UseSerilog((ctx, lc) => lc
            .MinimumLevel.Information()
            .WriteTo.Console());

        builder.Logging.AddConsole();

        //adding dbContext

        string[]? initialScopes = builder.Configuration["DownstreamApi:Scopes"]?.Split(' ') ?? builder.Configuration["MicrosoftGraph:Scopes"]?.Split(' ');
        builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"))
                .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
                    .AddMicrosoftGraph(builder.Configuration.GetSection("MicrosoftGraph"))
                    .AddInMemoryTokenCaches();

        builder.Services.AddControllersWithViews()
            .AddMicrosoftIdentityUI();

        builder.Services.AddAuthorization(options =>
        {
            options.FallbackPolicy = options.DefaultPolicy;
        });

        builder.Services.AddRazorPages();
        builder.Services.AddServerSideBlazor()
            .AddMicrosoftIdentityConsentHandler();

        builder.Services.AddRazorComponents()
            .AddInteractiveServerComponents();

        builder.Services.AddMudServices(config =>
        {
            config.SnackbarConfiguration.PositionClass = MudBlazor.Defaults.Classes.Position.TopCenter;
            config.SnackbarConfiguration.PreventDuplicates = true;
            config.SnackbarConfiguration.NewestOnTop = false;
            config.SnackbarConfiguration.ShowCloseIcon = true;
            config.SnackbarConfiguration.RequireInteraction = true;
            config.SnackbarConfiguration.HideTransitionDuration = 300;
            config.SnackbarConfiguration.ShowTransitionDuration = 300;
            config.SnackbarConfiguration.SnackbarVariant = MudBlazor.Variant.Filled;
        });

        builder.Services.AddMudBlazorDialog();

        //Adding my services


        var app = builder.Build();

        if (!app.Environment.IsDevelopment())
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();

        app.UseStaticFiles();

        app.UseRouting();

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

        app.MapControllers();
        app.MapRazorComponents<App>()
            .AddInteractiveServerRenderMode();
        app.Run();
    }
}

每次我启动我的应用程序时,第一次都会出现此错误:[MsIdWeb] 获取令牌期间发生错误:没有向 AcquireTokenSilent 调用传递任何帐户或登录提示。

但是登录立即生效,因为它会重试。我只是不知道该怎么做,我认为我无法向登录用户添加声明,因为该用户最初为空。

一开始,我忽略了错误,因为登录仍然可以立即进行,并且我没有遇到任何问题,但是前几天我尝试添加声明时,页面立即卡住了,并且根据日志,每次用户为空时,应用程序都会尝试新的登录。

我尝试了多种不同的方法,而不是 AddAuthentication,但没有成功。

我尝试的另一件事是手动重新登录,当 MsalUiRequiredException 弹出时,它只会强制我登录。但我再次将其删除,因为每次打开网站都会发生这种情况。

帖子版权声明 1、本帖标题:使用 WebApplicationFactory 进行基准测试
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Nidhin Paul在本站《asp.net-core》版块原创发布, 转载请注明出处!
最新回复 (0)
  • @kas 它实际上是 azure ad 的“代表”流程。(前端 mvc 和后端 api 均受 aad 保护,然后 mvc 可以使用访问令牌调用后端。)我可以稍后写一个小样本的详细步骤。

返回
作者最近主题: