解决方法是在启动类中手动将pathbase设置为"/",即可解决该问题。具体的代码示例如下:
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add("app");
builder.Services.AddScoped(sp => new HttpClient
{
BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)
});
//这里手动将pathbase设置为"/"
builder.Services.AddApiAuthorization(options =>
{
options.ProviderOptions.DefaultAccessTokenScopes.Add("myapi");
options.AuthenticationPaths.RemoteRegisterPath = "https://localhost:5001/Identity/Account/Register";
options.AuthenticationPaths.RemoteProfilePath = "https://localhost:5001/Identity/Account/Manage";
options.UserOptions.RoleClaim = "role";
options.UserOptions.AuthenticationType = "BlazorAuth";
options.ProviderOptions.Authority = "https://localhost:5001";
options.ProviderOptions.ClientId = "BlazorAuth.Client";
options.ProviderOptions.ResponseType = "code";
options.ProviderOptions.RedirectUri = $"{builder.HostEnvironment.BaseAddress}authentication/login-callback";
options.ProviderOptions.PostLogoutRedirectUri = $"{builder.HostEnvironment.BaseAddress}authentication/logout-callback";
options.ProviderOptions.DefaultScopes.Add("BlazorAuth.ClientAPI");
options.ProviderOptions.Scope.Add("offline_access");
options.ProviderOptions.Prompt = "consent";
options.ProviderOptions.UsePkce = true;
});
var host = builder.Build();
await host.RunAsync();
}
}