如何使用ASP.NET Web API 2.1的Query Parsing

MVC 5.1, Web API 2.1 RTM

時間2014/1/20,ASP.NET MVC 5.1與ASP.NET Web API 2.1與公告RTM,並且可以透過NuGet正式下載使用。使用MVC 5.1與Web API 2.1之前必須先進行Visual Studio開發工具的更新,之後才能正常使用MVC 5.1與Web API 2.1。

MVC 5.1與Web API 2.1有什麼更新?

此次更新主要是功能增強與問題修正:

ASP.NET MVC 5.1功能改善與增強

  1. 屬性路由改善
  2. Bootstrap在Editor範本的支援
  3. View支援Enum(列舉)
  4. Unobtrusive validation的MinLength與MaxLength屬性
  5. 在Unobtrusive Ajax支援"this"內容

ASP.NET Web APi 2.1功能改善與增強

  1. 全域錯誤處理
  2. 屬性路由改善
  3. Help Page改善
  4. IgnoreRoute支援
  5. BSON媒體格式支援
  6. 非同步過濾器支援
  7. 用戶端支援Query解析

完整的更新內容請參考asp.net說明:

Query Parsing不work!

Query Parsing(Query解析)是從Web API 2.1 RC就公告的功能,不過在Web API 2.1 RC時試不出來,可參考No.18的「[ASP.NET] Web API 2.1 RC New Future,No.18也是試不出來,Pre / Beta / RC … 試不出來就放水流吧!

心想,Web API 2.1 RTM應該可以正常work了?

官方爛說明

依照官方Query Parsing文件,我們新增一個主控台應用程式,然後安裝Microsoft ASP.NET Web API 2.1 Client Libraries 5.1.0版:

PM> Install-Package Microsoft.AspNet.WebApi.Client

console application with HttpValueCollection error

從官方文件上複製與貼上程式碼,你會看到HttpValueCollection錯誤訊息?怎麼回事,沒改完就RTM?經詢問其他MVP得到一個解決方案。這個方案應該是說官方文件沒交代清楚,特地抓那console application張圖就是要說明,那個誰誰誰,能不能幫忙反應一下。@@

Query Parsing不work的原因

原因很簡單,這個Query Parsing功能只改寫了「可攜式類別庫」的版本,而非可攜式類別庫專案都不會參考可攜式類別庫的版本:

WebApi Client Path

net45是一般使用的版本,portable-wp8+netcore45+net45才是可攜式類別庫的版本。NuGet會同時把兩者都下載回來。

改用可攜式Microsoft.AspNet.WebApi.Client.5.1.0

改用可攜式Microsoft.AspNet.WebApi.Client.5.1.0步驟很簡單:

  1. 移除System.NET.Http.Formatting參考
  2. 重新加入可攜式版本

如果一開始就是文件是教大家開啟可攜式類別庫專案,然後加入WebApi.Client的話,可以看下圖:

可攜式WebApi Client

可攜式類別庫專案一開始就會引用到正確的版本。

文件寫的好帶你上天堂,文件寫不好浪費…我浪費就好,大家省下時間好好學習吧。>_<

2 則留言:

  1. 哇勒....結果是這個原因 Orz... 當初RC我還試了好久.....想說會不會是我環境問題.....

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。