我的 ASP.NET Web API 中有以下操作:
public IEnumerable<Car> carssOfUser(int id, String username, String password)
{
using (var context = new CarEntities())
{
// Authorization. Allow user only to get his own cars
User userQueried = context.Users.Where(u => u.id == id).FirstOrDefault();
if (!userQueried.username.Equals(username))
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
//return null;
}
IEnumerable<Car> cars = context.Cars.Where(p => p.ownerId == id).ToList();
return cars;
}
}
但是,如果我从 Android 应用程序查询它以获取给定用户的汽车(通过 json).. 假设 id 为 2,它返回 9 辆汽车的集合(这是正确的,用户 2 有 9 辆汽车),但只有第一辆汽车有正确的字段值(名称、价格等),其余汽车在所有字段中为空。
这真的很奇怪,因为当我添加这些代码行时出现了问题:
// Authorization. Allow user only to get his own cars
User userQueried = context.Users.Where(u => u.id == id).FirstOrDefault();
if (!userQueried.username.Equals(username))
{
throw new HttpResponseException(HttpStatusCode.Unauthorized);
//return null;
}
删除它后,一切正常,所有汽车在字段中都有正确的值(不再是空值)......
您知道如何解释这种 imo 非常奇怪的行为吗?
我认为这并不重要(因为我没有这种授权的所有其他操作都可以正常工作),但我想提一下,从 Android 应用程序中我使用 gson 进行反序列化,而在服务器端我使用 JSON。 NET 进行序列化。