处理错误和处理不完整的身份验证上下文

问题描述 投票:0回答:2

我正在尝试处理与引发的异常和返回的 HTTP 状态代码有关的错误。我想两者兼得。

这是我当前在我的

Program.cs
文件中的内容:

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;

services.AddControllersWithViews();

services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
    .AddNegotiate();
services.AddAuthorization(options =>
{
    options.FallbackPolicy = options.DefaultPolicy;
});

var app = builder.Build();

if (!app.Environment.IsDevelopment())
    app.UseExceptionHandler("/Home/Error");
app.UseStatusCodePagesWithReExecute("/Home/Error", "?statusCode={0}");

app.UseStaticFiles();
app.UseRouting();

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

app.UseEndpoints(endpoints =>
{
    endpoints.AddGenericBookingSystemEndpoints();
});

app.Run();

我收到错误,不知道为什么,我认为这可能是由于我的“应用程序”项目的顺序造成的,我不知道如何重新排序以使其正常工作。主页无法加载,它只是返回 500 错误,内容如下:

InvalidOperationException: Attempting to use an incomplete authentication context.
Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleAuthenticateAsync()

我不知道如何重新排列项目的顺序,请有人帮忙吗?

我目前使用的是最新版本的

Visual Studio 2022
.NET

c# asp.net asp.net-mvc asp.net-core
2个回答
5
投票

我能够通过以下设置解决问题:

app.UseAuthentication();
app.UseStatusCodePagesWithReExecute("/Home/Error", "?statusCode={0}");
app.UseExceptionHandler("/Home/Error");
app.UseAuthorization();

0
投票

当使用最小托管模型(WebApplication.CreateBuilder(args))时,您不需要显式编写 app.UseAuthentication() 。它被隐式地称为第一个中间件(参见this)。所以,只需删除该行即可。

© www.soinside.com 2019 - 2024. All rights reserved.