【发布时间】:2022-10-24 11:08:57
【问题描述】:
每当我返回任何 Result 时,它总是 200 状态码。例如检查此代码
public async Task<IResult> Login(UserLoginDto login)
{
var user = await _userMgr.FindByEmailAsync(login.Email);
if (user != null)
{
var result = await _signinManager.PasswordSignInAsync(user, login.Password, false, false);
if (result.Succeeded)
{
var token = await _authRepo.GenerateToken(user);
_logger.LogInformation("User with email: {Email} is logged in ", user.Email);
return Results.Ok(new { user.Email, Token = token });
}
else
{
return Results.Unauthorized();
}
}
return Results.NotFound();
}
始终仅在响应正文中返回正确的状态代码,并在响应标头中返回 200Ok。我该如何解决这种奇怪的行为?我查看了 .net 6 文档,但无济于事。
更新#1
这是中间件
var app = builder.Build();
await app.SystemInit(builder.Configuration);
app.UseSwagger();
app.UseSwaggerUI();
// Configure the HTTP request pipeline.
//todo: disable cors for production env
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseCors(myAllowSpecificOrigins);
}
app.UseHealthChecks("/api/healthy");
// app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();
【问题讨论】:
-
强烈建议某些东西正在使用 IResult 并不恰当地包装它。可能是一些配置错误/编写错误的中间件、某种代理等。
-
你是对的。但中间是样板。我将在我的帖子中添加我的中间人
-
@Ryan 为什么不使用 return NotFound();
-
嗨,欢迎。微软有很好的文档。请阅读:link
-
通过放置断点检查结果中返回的值是什么?
标签: c# asp.net-core .net-6.0