ASP.Net Core Error JSON

可紊 提交于 2019-12-12 22:21:33

问题


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


回答1:


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. :)




回答2:


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};
    }
}


来源:https://stackoverflow.com/questions/39353016/asp-net-core-error-json

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!