【发布时间】:2013-09-11 05:47:25
【问题描述】:
所以,我闪亮的新“单页应用程序”由于 似乎 由以下 API 调用引起的 500 错误而出现问题:/api/fuel/?_=123123123123。这让我很吃惊,因为我无法想象应用程序为什么会一开始就进行这样的 API 调用;我的控制器上没有这样的参数,我当然不建议任何人要求该表单的 URL。
当页面加载其视图模型时发生错误。它应该从数据库中加载项目,并通过 ajax 调用将它们作为 JSON 分流回 Knockout.js,以便在某处陷入某些 HTML;涉及很多代码,而我几乎没有写过,所以...
有人见过这个吗?有谁知道这个长得可笑的数字是从哪里来的,为什么它会被添加到我的 URL 上?这就是我要找的机器人吗?
更新:
我打开了 Fiddler,它看起来 问题可能是 A) 与传递的参数无关(是会话 ID 还是验证令牌或类似的废话?)。我得到的 500 响应还包括一些关于他们如何只需要无参数构造函数的 gobbledygook。看来我可能需要再看看我的模型?
更新 2:
好吧,也许你们知道这即将到来,但我不敢相信是什么解决了这个问题:显然,Web API 不喜欢你从 IOrderedQueryable(或类似的东西)中选择 .Select();我在 .OrderByDescending() 之后添加了 .AsEnumerable(),突然间一切都变得美好了。
return db.FuelItems
.Where(f =>
f.UserId == cachedUserId
//&& f.Date >= startDate
//&& f.Date < endDate)
)
.OrderByDescending(f => f.Date)
.AsEnumerable()
.Select(f => new FuelItemDto(f));
【问题讨论】:
-
没有看到 ajax 查询很难说是什么导致了这个问题。您的 FuelController 的 Get 方法需要哪些参数?
-
无。 (虽然有两种 GET 方法——这本身有问题吗?第二种是在寻找 ID,但第一种根本不需要任何东西。)
-
能贴出代码吗?
-
我会发布您喜欢的任何特定代码,但这是新的 MVC 模板之一,我们正在讨论...嗯,总共大约一千行?
-
@archer884 不,这应该不是问题。我最好的猜测是,开发 JavaScript 代码的人并没有为您的 API 方法构建正确的 URL。对于任何带有“$.ajax”的东西,在 js 代码中快速 Ctrl+F 可能是一个不错的起点。
标签: asp.net-mvc jquery knockout.js asp.net-web-api