【发布时间】:2023-02-10 20:51:04
【问题描述】:
我正在尝试使用 app.UseExceptionHandler("/error"),这样我就可以使用 ProblemDetails 处理所有错误。
但是,我从来没有被重新路由到ErrorController。当我设置断点时,调试器永远不会进入该端点。
有谁知道为什么我没有达到断点?
program.cs 中的代码是:
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
{
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services
.AddApplication()
.AddAInfrastructure(builder.Configuration);
}
WebApplication app = builder.Build();
{
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(q => q.SwaggerEndpoint("/swagger/v1/swagger.json","PowerPlanner v1"));
}
app.UseExceptionHandler("/error"); // <===============
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
}
app.Run();
控制器:
using Microsoft.AspNetCore.Mvc;
[ApiController]
public class ErrorsController : ControllerBase
{
[HttpGet("/error")]
public IActionResult Error()
{
return Problem();
}
}
【问题讨论】:
-
我无法重现这个。将 WeatherForecast 控制器结果命中 ErrorController 中的异常的新项目归档。
-
看起来我明白了,这是因为 GET 端点被重新路由到 ErrorsController 中的 GET 端点。我正在尝试使用 POST 端点进入错误的 GET 端点。有什么办法可以将所有内容重新路由到 1?当我尝试将属性更改为 [Route("/error")] 时,我得到一个
SwaggerGeneratorException: Ambiguous HTTP method for action
标签: c# error-handling swagger asp.net-core-webapi