如何处理"未找到" Web API控制器中的错误 - 获取方法,MVC 4?

时间:2017-05-30 12:03:46

标签: asp.net-mvc rest asp.net-mvc-4

我有这个API方法:

    [HttpGet]
    public MyTable GetMyTable(byte id, string langid)
    {
        MyTable mytable = db.MyTables.Find(id, langid);

        if (mytable  == null)
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
        }

        return mytable;
    }

目前它会抛出NotFound异常,但我不希望它抛出异常,而是我希望得到JSON格式的消息,说明找不到所需的条目。

我可以使用HttpResponseException添加try / catch块,但是此方法返回模型的实例,而不是HttpResponseMessage。

注意:我使用的是MVC 4,Visual Studio 2010,EntityFramework 4.3

上述方法应该改变什么?

P.S。如果我只返回用

创建的空实例,那会更好吗?
myTable = db.MyTableDbSet.Create(); 

2 个答案:

答案 0 :(得分:4)

我觉得自己很容易接受这种方法:

FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);

答案 1 :(得分:0)

我使用的是.NET 4.0,并且在.NET 4.5中添加了Task.FromResult(),所以我认为我不能使用IHttpActionResult接口。

这是我做的:

    public HttpResponseMessage GetMyTable(string id, string langid)
    {
        MyTable myTable = db.MyTableDbSet.Find(id, langid);

        if (myTable == null)
        {
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.OK, myTable);
        }
    }