簡體   English   中英

Web API無法處理我不知道發送的參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM