如何在返回500响应时返回信息

本文关键字:返回 信息 响应 | 更新日期: 2023-09-27 17:53:00

我想从我的后端返回一个带有信息的500异常到我的前端,但每次我选择做一个Response.StatusCode = 500,代码似乎返回500标准返回页面。在我选择告诉系统这是500个错误之后,是否有任何方式返回我自己的数据?

[HttpPost]
public async Task<ActionResult> AccountInformation(OrganizationAccountInformationVM vm)
{
    var response = await _adminFacade.UpdateOrganizationAsync(organization);
    if (response.HasErrors)
    {
        Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return Json(new {Code = "500", Header = "Error", Message = "Wrong"});
    }
    Response.StatusCode = (int)HttpStatusCode.OK;
    return Json(new {Code = "400", Header = "Success", Message= "UpdatedSuccessful"}); 
}

如果没有错误,这段代码将返回"好的"数据,如果响应HasErrors则返回"坏的"数据(整个html页面)。你知道我做错了什么吗?

如何在返回500响应时返回信息

您可以指定不使用web替换错误响应。配置文件。

<system.webServer>
   <httpErrors existingResponse="PassThrough" /> 
</system.webServer>

查看system webserver httpererrors

如果您不想显示默认的IIS错误页面,而是显示您自己的错误页面,则需要在响应中将TrySkipIisCustomErrors设置为true:

    public async Task AccountInformation(OrganizationAccountInformationVM vm)
    {
        HttpContext.Response.TrySkipIisCustomErrors = true;
        // your response with code 500
    }