我已经使用标准的Visual Studio 2022模板创建了一个Blazor Server项目,并将身份验证设置为Microsoft Identity。
当我尝试在虚拟应用程序中将其部署到IIS服务器上的默认网站时,它给出了以下错误:
Program.cs:
var builder = WebApplication.CreateBuilder(args);
var 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 =>
{
// By default, all incoming requests will be authorized according to the default policy
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor()
.AddMicrosoftIdentityConsentHandler();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
我认为这是返回网址的问题,因为虚拟应用程序名称会自动添加到地址中。我的应用程序注册中包含了此网址,但它仍然不起作用。
1条答案
按热度按时间pobjuy321#
我想在你看到上面的错误信息页面后,你可以尝试访问
http://localhost
或者你可以改变默认的主页url,看看用户是否已经成功登录。我用
Microsoft Identity
创建了一个新的Blazor服务器应用程序,然后用tenant id, client id
填充appsettings.json
,并将CallbackPath默认为/signin-oidc
。在AAD中,将重定向URL设置为https://localhost/signin-oidc
。在本地测试时运行良好。发布到IIS后,登录不太好,因此我将和内容,以便我可以看到更多错误问题。
但在完成这些步骤后,除了登录重定向回
http://localhost/signin-oidc
之外,一切都运行良好。请注意,我们需要在Azure AD门户中将重定向URL设置为http
,因为IIS默认使用HTTP
。但由于没有页面路由到signin-oidc
。如果我上面说的不是问题,我想你可以创建一个自签名证书并将其绑定到默认网站,然后访问
https
。刚才我又试了一次,它一直显示500错误,如下图所示。然后我创建了自签名证书使用https,然后解决了500错误。