[英]Web API can't handle parameter I didn't know I was sending?
因此,我閃亮的新“單頁應用程序”由於似乎由以下API調用引起的500錯誤而開始/api/fuel/?_=123123123123
: /api/fuel/?_=123123123123
。 這讓我非常驚訝,因為我無法想象為什么應用程序會像這樣一開始進行API調用; 我的控制器上任何地方都沒有這樣的參數,而且我當然不建議任何人索要該格式的URL。
頁面加載其視圖模型時發生錯誤。 它應該從數據庫中加載項目,並通過ajax調用以JSON的形式將它們分流回Knockout.js,從而陷入某些HTML中。 其中涉及很多代碼,而我幾乎沒有編寫任何代碼,所以...
誰看過這個嗎? 有誰知道這個荒謬的數字是從哪里來的,為什么把它粘貼到我的URL上? 這甚至是我要尋找的機器人嗎?
更新:
我破解了Fiddler, 看起來問題可能是A)與傳遞的參數無關(會話ID或驗證令牌還是類似的廢話?)。 我得到的500響應還包含一些關於他們如何只需要無參數構造函數的小知識。 看起來我可能需要再看一下我的模型?
更新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調用添加,以防止響應被緩存。 數字部分是時間戳(以毫秒為單位),因此它總是會變化。 假設_
永遠不會成為查詢字符串中的真實參數,因此它不會影響您的請求。 但是,它保證了查詢字符串始終是不同的,這可以防止瀏覽器緩存它。
參見: http : //api.jquery.com/jQuery.ajax/ ,有關緩存選項的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.