gpt4 book ai didi

c# - 如何在 Asp.Net 中间件中抛出错误

转载 作者:行者123 更新时间:2023-12-05 03:48:49 25 4
gpt4 key购买 nike

我正在使用自定义中间件来检查每个请求 header 中的租户,如下所示:

public TenantInfoMiddleware(RequestDelegate next)
{
_next = next;
}

public async Task InvokeAsync(HttpContext context)
{
TenantInfoService tenantInfoService = context.RequestServices.GetRequiredService<TenantInfoService>();

// Get tenant from request header
var tenantName = context.Request.Headers["Tenant"];

if (!string.IsNullOrEmpty(tenantName))
tenantInfoService.SetTenant(tenantName);
else
tenantInfoService.SetTenant(null); // Throw 401 error here

// Call the next delegate/middleware in the pipeline
await _next(context);
}

在上面的代码中,我想在管道中抛出 401 错误。我怎样才能做到这一点?

最佳答案

感谢您的评论,阐明了您想做什么。您的代码最终将如下所示:

public async Task InvokeAsync(HttpContext context)
{
TenantInfoService tenantInfoService = context.RequestServices.GetRequiredService<TenantInfoService>();

// Get tenant from request header
var tenantName = context.Request.Headers["Tenant"];

// Check for tenant
if (string.IsNullOrEmpty(tenantName))
{
context.Response.Clear();
context.Response.StatusCode = (int)StatusCodes.Status401Unauthorized;
return;
}

tenantInfoService.SetTenant(tenantName);

await _next(context);
}

关于c# - 如何在 Asp.Net 中间件中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64216209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com