C# Web Api返回已发生的错误
我编写了一个api来获取json格式的一些对象。它在Linq命令中获取值并转到返回方法。但并没有回报我所期望的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
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(订单);
}
捕获(例外情况除外)
{
返回请求(例如消息);
}
}
有两种方法可以做到这一点
订单列表
,然后返回即可李>
返回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)”,让我很失望。如果你编辑,我会投票。