如何在Asp.Net Core中的JsonResult中返回错误状态?

问题描述 投票:0回答:1

在将Asp.Net MVC 5应用程序迁移到Core版本后,我试图返回错误状态。

在我的旧应用程序中,我使用了一个从JsonHttpStatusResult继承的类(JsonResult),并返回catch错误(如果有)。但是,不幸的是,当尝试将其添加到新项目中时,它不再具有某些功能。

我想对Asp.Net Core版本使用相同的概念,因为如果JsonResult中发生错误,我不想返回true或false。以下是在MVC 5中如何工作的示例:

CLASS

public class JsonHttpStatusResult : JsonResult
{
    private readonly HttpStatusCode _httpStatus;

    public JsonHttpStatusResult(object data, HttpStatusCode httpStatus)
    {
        Data = data;
        _httpStatus = httpStatus;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.RequestContext.HttpContext.Response.StatusCode = (int)_httpStatus;
        base.ExecuteResult(context);
    }
}

示例JSONRESULT

public JsonResult Example()
{
    try
    {
        //Some code
        return Json(/*something*/);
    }
    catch (Exception ex)
    {
        return new JsonHttpStatusResult(ex.Message, HttpStatusCode.InternalServerError);
    }
}

AJAX REQUEST

$.ajax({
    url: "/Something/Example",
    type: "POST",
    dataType: "json",
    success: function (response) {
        //do something
    },
    error: function (xhr, ajaxOptions, thrownError) {
         //Show error
    }
});

如何执行此操作或在Asp.Net Core中执行类似操作?

asp.net-core asp.net-ajax
1个回答
0
投票

您不必创建自己的实现。 ASP.NET Core中的新JsonResult具有一个StatusCode Property

因此只需将您的代码更改为:

抓住(前例外){返回新的JsonResult(ex.Message){StatusCode =(int)HttpStatusCode.InternalServerError};}
© www.soinside.com 2019 - 2024. All rights reserved.