0
只有一個對象我在我的ASP.NET Web API了以下行動:的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;
}
取出後,一切都運行完美的罰款和所有車領域具有正確的值(不是空值了)..
你有什麼想法如何解釋這個非常奇怪的行爲?
我不認爲這很重要(導致所有其他行動,我沒有這種授權工作沒有問題),但我想提到,從Android應用程序我使用gson反序列化,並在服務器端我使用JSON.NET來序列化。
在您的第二個代碼示例中,如果用戶名與找到的用戶名匹配,您將拋出異常 – Bond 2012-04-09 12:20:34
是的,這只是一個錯字。 (上面代碼片段中的代碼是正確的)。更正了第二個片段。 – Bart 2012-04-09 12:23:46
您是否曾嘗試先拉車,然後進行授權檢查?這真是奇怪的行爲。你的CarEntities是唯一的上下文對象嗎?你使用EDM並有一些特定的關聯配置? – Bond 2012-04-09 12:32:44