这个问题通常是由于ASPNET Core API的配置问题导致的。如果API配置了中间件来处理异常,API将在200响应中返回错误消息而不是500错误。要解决这个问题,可以在Startup.cs文件中注册ExceptionHandler中间件来处理异常。下面是一个示例:
在ConfigureServices方法中添加以下代码:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddExceptionHandler(); //新增注册ExceptionHandler中间件
在Startup.cs文件中添加以下代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseExceptionHandler(); //注册ExceptionHandler中间件
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
然后在应用程序根目录添加ExceptionHandlerExtensions.cs,包含以下代码:
public static class ExceptionHandlerExtensions
{
public static void UseExceptionHandler(this IApplicationBuilder app)
{
app.UseExceptionHandler(builder =>
{
builder.Run(async context =>
{
context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;
context.Response.ContentType = "application/json";
var ex = context.Features.Get();
if (ex != null)
{
var err = JsonConvert.SerializeObject(new { error = ex.Error.Message });
await context.Response.WriteAsync(err);
}
});
});
}
}
通过注册ExceptionHandler中间件,API将在500错误响应中返回错误消息。