简体   繁体   中英

ASP.Net Core Error JSON

I'm playing a bit with ASP.NET Core. I'm creating a basic webapi. I'd like to show a JSON error when there is a problem.

The printscreen shows want I want on my screen. The only problem is that it's send with a statuscode of 200.

打印屏幕

catch (NullReferenceException e)
{
    return Json(NotFound(e.Message));
}

I could solve it by doing this:

return NotFound(new JsonResult(e.Message) {StatusCode = 404);

But I don't like this because now you can specify statuscode 500 with a NotFound.

Can someone put me in the correct direction?

Sincerely, Brecht

Can't you do something like return NotFound(e.Message);

Or you might have your own error document format and go for return NotFound(new ErrorDocument(e.message));

If you have to return with a JsonResult then go for something like the following:

return new JsonResult(YourObject) { StatusCode = (int)HttpStatusCode.NotFound };

Now you have full control over response format and your status code too. You can even attach serializer settings if need be. :)

EDIT: Found a much better solution here on stackoverflow.

Thank you Swagata Prateek for reminding me to just use a return new JsonResult() . I did solve me problem on this way.

public class Error
{
    public string Message { get; }
    public int StatusCode { get; }

    public Error(string message, HttpStatusCode statusCode)
    {
        Message = message;
        StatusCode = (int)statusCode;
    }
}    


[HttpGet("{id}")]
public IActionResult Get(int id)
{
    try
    {
       return Ok(_manager.GetPokemon(id));
    }
    catch (NullReferenceException e)
    {
       var error = new Error(e.Message, HttpStatusCode.NotFound);
       return new JsonResult(error) {StatusCode = error.StatusCode};
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM