C# Web Api返回已发生的错误

C# Web Api返回已发生的错误,c#,asp.net,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Asp.net Mvc 4,Asp.net Web Api,我编写了一个api来获取json格式的一些对象。它在Linq命令中获取值并转到返回方法。但并没有回报我所期望的 values return ({"Message": "An error has occurred."}) 我找了很多,但什么也没找到 public IHttpActionResult GetOrdersOfPostman(string postmanId) { try { var postmanCustomersM

我编写了一个api来获取json格式的一些对象。它在Linq命令中获取值并转到返回方法。但并没有回报我所期望的

values return ({"Message": "An error has occurred."}) 
我找了很多,但什么也没找到

 public IHttpActionResult GetOrdersOfPostman(string postmanId)
    {
        try
        {
            var postmanCustomersModel = new List<PostmanCustomerModel>();
            var id = Convert.ToInt64(postmanId);

            var orderStatus = (byte) OrderStatus.DeliverToPostman;
            var orders = _orderRepository.AsQueryable().Where(x => x.PostmanId == id && x.OrderStatus==orderStatus &&
                         x.SellerCustomerId > 0).ToList();

            return Ok(orders);
        }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }
public IHttpActionResult GetOrdersOfPostman(字符串postmanId)
{
尝试
{
var postancustomersmodel=新列表();
var id=Convert.ToInt64(postmanId);
var orderStatus=(字节)orderStatus.DeliverToPostman;
var orders=\u orderRepository.AsQueryable()。其中(x=>x.PostmanId==id&&x.OrderStatus==OrderStatus&&
x、 SellerCustomerId>0.ToList();
返回Ok(订单);
}
捕获(例外情况除外)
{
返回请求(例如消息);
}
}

有两种方法可以做到这一点

  • 包含并返回自定义json对象。只需传递Json格式的
    订单列表
    ,然后返回即可
    返回JsonConvert.SerializeObject(新的jTableResponse(结果),格式化.None)

    返回Json(yourobject,JsonRequestBehavior.AllowGet)

  • 另一种选择是创建自己的响应模型,然后使用Json库将其作为Json对象返回
  • 下面是完整的示例

    using System; 
    namespace MyProject.Api_Models
    {
        public class ApiResponse
        {
            public bool Status { get; set; }
            public Object Data { get; set; }
            public string Message { get; set; }
        }
    }
    
    它被用作:

    [HttpPost]
    public JsonResult GetGroupFriendsLists(int groupid)
    {
        var grp = db.Groups.Where(k => k.GroupId == groupid).Any();
        if (!grp)
        {
            return Json(new ApiResponse
            {
                Message = "Invalid group inforamtion.",
                Status = false
            }, JsonRequestBehavior.AllowGet);
        }
        var lists = db.Groups.Where(k => k.GroupId == groupid).Select(k => k.SharedLists).FirstOrDefault().Where(k => k.ListType == SharedListTypes.Friends && (k.ExpiryDate == null || k.ExpiryDate.Value.Date > DateTime.Now.Date)).Select(
            k =>
            new
            {
                k.CreatorId,
                ExpiryDate = HelperFunctions.DateTimeFormattedString(k.ExpiryDate),
                k.ListId,
                k.ListName,
                k.ListType,
                TimeStamp = HelperFunctions.DateTimeFormattedString(k.TimeStamp),
                ItemsCount = k.ListItems.Count
            }).ToList();
        if (lists.Count <= 0)
        {
            return Json(new ApiResponse
            {
                Status = false,
                Message = "No friends lists in this group."
            }, JsonRequestBehavior.AllowGet);
        }
        return Json(new ApiResponse
        {
            Status = true,
            Message = "We found the friends shared lists of this group.",
            Data = lists
        }, JsonRequestBehavior.AllowGet);
    }
    
    [HttpPost]
    公共JsonResult GetGroupFriendsList(int-groupid)
    {
    var grp=db.Groups.Where(k=>k.GroupId==GroupId).Any();
    如果(!grp)
    {
    返回Json(新的ApiResponse
    {
    Message=“无效的组信息。”,
    状态=错误
    },JsonRequestBehavior.AllowGet);
    }
    var list=db.Groups.Where(k=>k.GroupId==GroupId)。选择(k=>k.SharedList)。FirstOrDefault()。其中(k=>k.ListType==SharedListTypes.Friends&(k.ExpiryDate==null | | k.ExpiryDate.Value.Date>DateTime.Now.Date))。选择(
    k=>
    刚出现的
    {
    k、 创造者,
    ExpiryDate=HelperFunctions.DateTimeFormattedString(k.ExpiryDate),
    k、 ListId,
    k、 列表名,
    k、 列表类型,
    TimeStamp=HelperFunctions.DateTimeFormattedString(k.TimeStamp),
    ItemsCount=k.ListItems.Count
    }).ToList();
    
    如果(lists.Count)您可以尝试自己调试:在控制器主体的开始处设置一个断点,并逐步检查代码以找出错误…我设置断点代码工作正常,但返回错误。是..尝试调试,您可以在InnerException(例如InnerException)中找到它您是否在浏览器中浏览了该方法的URL?如果是,那么输出是什么?您是否设置了正确的[ResponseType(…)]属性,并且您的订单是否可序列化?既然是web api,为什么我们需要在此处使用Json()。为什么不确定()是的,可以使用它,但我认为,对于新手来说,最好是操纵并完全控制他们自己的自定义响应。@PowerStar这是一个简单的示例,不需要使用所有必要的边界条件来复杂事情,以便开始使用第一个API。从这个角度来看,您的答案似乎很复杂。.net已经提供了许多现成的解决方案x特性。所以我们需要使用它,而不是重新发明。这一行“returnJSON(yourobject)”,让我很失望。如果你编辑,我会投票。