[C#] ASP.NET Core 6.0 - 一種可以將 Page 當 WebAPI 用的方法,但不推薦

2023-02-06

今天來寫一個不推薦使用的小技巧,但是又是一個可以解決一些小問題的方法

簡單說一下情境,在 ASP.NET Webform 時代,有時候真的有時候給客戶一個東西要 retun JSON 的答案

但是我又不想使用一大個框架來解決問題,我會就把 Page 清乾淨後 直接處理POST過來的參數再 retun 我要的 JSON string

 這陣子我又遇到了,當然最好的解決方法,請使用 WebAPI ,這不是一個好的範例

用這方法請自己知道自己在做啥危險性有多高在評估使用。



先說一下環境,我先建立一個 ASP.NET 6 的 Page  SimpleEchoPost 這裡面 我會簡單的實作 OnPost

之後我再透過一頁 html 透過  AJAX POST 一些資料到  SimpleEchoPost  ,並且拿回資料 


1. 製作 SimpleEchoPost (模擬備呼叫的 API) ,這裡面需要注意的是 _Layout=null 這樣才會回傳一個沒有 Layout 的文本

SimpleEchoPost.cshtml


2.在實做的部份有兩個重點 在該 PageModel 上你必須加入  [IgnoreAntiforgeryToken] 這 Tag,不然你在 AJAX 呼叫時會出現

參照網址政策: strict-origin-when-cross-origin 的 400 error code 

OnPost部分我允許傳入 fistname, lastname 並且回傳就是單純的 string

SimpleEchoPost.cshtml.cs


3. AJAX 呼叫的部分


案例結束,這樣就不用開 WebAPI 可以自己寫一個簡單的 service ,不過缺點就是 你使用了 IgnoreAntiforgeryToken 安全性你得好好評估

在來就是 WebAPI 難道不香嗎?

使用前可以參考

https://learn.microsoft.com/zh-tw/aspnet/core/security/anti-request-forgery?view=aspnetcore-6.0


當麻許的超技八 2014 | Donma Hsu Design.