C# - 製作ASP.NET Web API專案

這次想要在上次的MVC 4專案(https://lucrelin.blogspot.com/2019/08/c-aspnet-mvc4.html)中增加Web API服務。

今天文字感覺一直寫得卡卡的QQ

先大致說明Web服務小歷史:

ASMX Web服務支援HTTP之上的SOAP,但不易支援不需互動操作(因而也不需要SOAP)的簡單Web服務。

==> WCF建立Web服務。

==> ASP.NET Web API捨棄與應用程式互動操作的SOAP,可快速建立簡單的HTTP Web服務(Web API)。不回傳SOAP的XML,而是回傳JSON。如果要求其他傳輸或格式類型的其他Web服務,仍可使用WCF。


因為不打算寫一篇專門的WCF文章,這邊大概截圖做的結果:

使用預設的WCF專案,之後到該服務的網址。此時可用C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\WcfTestClient.exe(一般visual studio可從工具>外部工具找到,但我的版本找不到,因而直接到檔案路徑打開)得到SOAP測試結果如下:



這邊先提個做Web API小測試時遇到的問題:建立一個MVC 4,選擇Web API的預設專案,直接試跑,發現一開始就出錯如下:

以上主要錯誤訊息為「無法載入檔案或組件 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]

當去專案的「參考」查看時,發現Newtonsoft.Json的dll版本是4.5.0.0,但是錯誤訊息最後是找版本6.0.0.0,


因而參考以上連結,將專案中的web.config中的bindingRedirect部分改為:
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0"/>

解決報錯。

最後終於進入正題,先給Web API的code:

這次推git的方式突然覺得不大好,截圖提醒下次別下git add *:


一開始用GET得到資料時,得到的意外的XML:

因為ASP.NET Web API內建支援 JSON 與 XML 兩種輸出格式,並依瀏覽器端送出的 Accept 標頭自動決定回應的內容格式,在沒有指定或查無格式的情況下,會預設回應 JSON 格式的內容。因為 Chrome預設會發送 XML 的 Accept,所以 Web API 回傳 XML。

以下有兩種解法,但皆是對「Web API 的 XmlFormatter 所支援的媒體類型(MediaType)做修正」:


修正後就可在畫面看到GET後的JSON結果:

另外,POST的發送需靠Fiddler。先運行專案,之後在Fiddler裡的Composer中設定好,按下Execute。之後在左側欄選擇發送完的結果,雙擊後在右側得到結果:


最後可到Guestbook專案首頁看到該次新增結果:


p.s.用Fiddler發送POST詳細內容可看:https://www.cnblogs.com/101718qiong/p/8118033.html

留言

  1. Wynn Hotel & Casino, Las Vegas - Mapyro
    Welcome to Wynn Hotel & Casino, Las Vegas. 3131 Las 논산 출장샵 Vegas 상주 출장샵 Blvd S. The Strip, Las Vegas, 경산 출장안마 NV 89109. Get 김포 출장마사지 Directions · (702) 770-7055. Call Now · More Info. Hours, Accepts 광주광역 출장샵 Credit Cards,

    回覆刪除

張貼留言

熱門文章