顯示具有 ASP.NET Core 標籤的文章。 顯示所有文章
顯示具有 ASP.NET Core 標籤的文章。 顯示所有文章

取消Chrome-based瀏覽器自動將HTTP重導向HTTPS

取消Chrome-based瀏覽器自動將HTTP重導向HTTPS

公司最近在內部網站開始導入使用 HTTPS,伺服器僅匯入憑證,但還不到強制使用的階段。但在測試過程發現一點點麻煩的地方,情境與網路上的有所不同。一般碰到是開發者進行開發時會用到 localhost 這個網域,而瀏覽器因為加強安全性,因此會強制進行 HTTP 重導向 HTTPS 的動作。這個動作稱為 HSTS(HTTP Strict Transport Security)。

答客問:ASP.NET Core Web API簡單型別無法正常取值問題背後的問題

答客問:ASP.NET Core Web API簡單型別無法正常取值問題背後的問題

教學上,我一直認為沒有爛問題。只有懂與不懂。實務問題都是好問題。

API Question

原始問題是,他想要對一個簡單型別進行取值的動作,我們快速打造出第一版原型ASP.NET Core Web API程式碼:

答客問:多層JSON結構如何轉換為C#的Model物件

答客問:多層JSON結構如何轉換為C#的Model物件

教學上,我一直認為沒有爛問題。只有懂與不懂。

平常我們在課程上設計的範例為求簡單好懂,通常都會盡量簡化。但回去之後的實務問題,在我眼裡都非常有價值。API 的開發可以很簡單,也可以很複雜,例如,只是單純從後端資料庫取資料,資料表與Model的對應關係通常都是一對一(1:1)的,輸出入也很單純只會有一層,除非你導入了如 Entity Framework 之類 ORM,產生了一對多(1:n)或多對多(n:n)的情境。

{
    "filter":{
        "name":"bruce",
        "currentPage":1,
        "pageSize":5
    }
}

以同學提問的情況,感覺比較像 Front-End First(或稱 JSON First),也就是 JSON 規格是由前端定義。我們一步一步來解決。

簡單五步驟:ASP.NET Core整合Hangfire來排程更新口罩剩餘數量資料

簡單五步驟:ASP.NET Core整合Hangfire來排程更新口罩剩餘數量資料

口罩API系列()()()就資料面而言,已經處理的差不多了,不過,專案還有改善的空間。

  1. 專案第一次啟動時,需要初始化資料庫資料。目前實作的程式碼而言,我們每次請求都會重覆檢查一次
  2. 每次請求都會重覆檢查一次資料源是否有更新

關注點分離來看,目前的 MaskController 工作有點雜且職責不夠單一。第一個問題,如果從 EF Core 下手,可能是實作 SeedData 方式來解決,但比較麻煩的事情是資料來源是網路上,而且資料內容不固定。第二點比較麻煩。正在構思時,剛好好友 Demo 貼文說 dotblogs 改版採用 Hangfire 來處理排程事件。疑,Hangfire 不就是這個需求的最佳解嗎!

使用Hangfire處理ASP.NET MVC/Web API長時間與排程工作」多年前已經用的非常開心。這次讓我們在 ASP.NET Core Web API 來整合 Hangfire 來解決我們碰到的問題。

答客問:中文欄位對輸出資料長度的影響?

答客問:中文欄位對輸出資料長度的影響?

在口罩API系統()()都有朋友提出了中文欄位對長度的見解。我是個人沒什麼特別的想法,Just Do it 的寫程式驗證最簡單有效。

簡單五步驟:以EF Core整合SQLite儲存口罩剩餘數量資訊

簡單五步驟:以EF Core整合SQLite儲存口罩剩餘數量資訊

前篇,我們展示使用 ASP.NET Core Web API 來快速提供口罩剩餘數量查詢API,但這個展示專案有二個較大缺點,我們持續來改進它。

  1. 原始資料採用 Unicode 編碼,尤其是中文欄位,這會造成傳輸資料過程的資料量不小。
  2. 我們只是單純轉拋政府資料開放平臺的口罩剩餘數量的資料,每次請求就重新請求與轉拋,它們的資料更新並不即時。

我們會先處理第二點,這裡我選擇利用 EF Core 整 SQLite 來當暫存資料的儲存點,因為原始資料約 6000 筆上下,這樣的處理量 SQLite 非常合適,而且它的特色是帶著就走且免費,發行部署也相當方便。在未超過更新間隔時前,就由 SQLite 裡去取資料,以減輕資料源的壓力。在處理第二點時,會隨便處理第一點,在取回政府資料開放平臺的口罩剩餘數量資料並儲存前,我們利用 Model 裡的一點小技巧來轉換資料源到英文欄位,並以英文欄位來輸出。

簡單四步驟:使用ASP.NET Core提供口罩剩餘數量查詢API

簡單四步驟:使用ASP.NET Core提供口罩剩餘數量查詢API

以下利用一個ASP.NET Core Web API範例來說明如何在ASP.NET Core撰寫一支去串接政府資料開放平臺的口罩剩餘數量,並提供為API讓人家使用。

資料來源:健保特約機構口罩剩餘數量明細清單

小心ASP.NET Core裡Async結尾Action方法!

小心ASP.NET Core裡Async結尾Action方法!

在測試一段非同步程碼時,發現一個 ASP.NET Core 裡 Route 有趣現象。平常為了測試方便,習慣會修改預設路由規則,例如將 ASP.NET Core Web API Route("api/[controller]") 改為 Route("ControllerName/[action]")

Redis Master-Slave-Sentinel for Windows Container

Redis Master-Slave-Sentinel for Windows Container

Master-Slave-Sentinel 本機測試

我們先在本機進行 Redis for Windows 的 Master-Slave-Sentinel 架構測試。由於微軟官方已經不再繼續維護 Redis for Windows,目前還有一位 tporadowski fork 後持繼在更新與維護。讓我們謝謝他。

整合VSTS Build/Release與Microsoft Azure服務完成ASP.NET Core容器化一條龍服務

整合VSTS Build/Release與Microsoft Azure服務完成ASP.NET Core容器化一條龍服務

你就是那條龍
來源:網路

ASP.NET Core 本身跨平台特性,使得他非常合適活在 Docker Container 裡。這裡試著把一個 github 專案先匯入 VSTS,然後在 VSTS Build 的 CI 服務進行 build image 和 pull image 的動作,pull image 我們採用 Microsoft Azure 的 Container Registry 服務來當私有庫。有了 image 之後,在使 VSTS Release 的 CD 服務將 image 送到 Web App for Container 去進行執行動作。

VS / VS Code <--> VSTS git <--> Build / Pull Image <--> ACR <--> Release <--> > Web App for Container <--> User

正常產生驗證用HTTP Cookie卻一直通不過Authorize驗證?

正常產生驗證用HTTP Cookie卻一直通不過Authorize驗證?

同事詢問一個靈異的狀況。美國同事的電腦,不論如何測試就是無法登入最近採用 ASP.NET Core + Razor Pages 開發的一個新服務網站。此網站使用預設 [Authorize] 來驗證,後端沒有什麼太深的程式碼,就是驗證帳密通過設定驗證 HTTP Cookie。

一開始的方向還在通想會不會是 ASP.NET Core 本身有雷,這個技術還很新,不敢說我們的掌握度還很好,可是想想可能性非常的低,這個 [Authorize] 的發展從 ASP.NET MVC 到 ASP.NET Core 應該算成熟的應用。反覆測試,發現一奇特現像。

  • US同事電腦:
    • Chrome 無法登入,一直導回登入頁面。
    • 登入過程需產生的驗證 Cookie ,經 F12 開發工具確認,有正確產生。
  • TW同事電腦:
    • Chrome 正常。
    • Firefox 重現無法登入,一直導回登入頁面。

如何成為Microsoft Docs繁體中文貢獻者

如何成為Microsoft Docs繁體中文貢獻者

MSDN Library 機器翻譯

你是否有過邊看 MSDN Library 文件,不時浮現一個「x」字,心想:「這是在寫什麼鬼?」(台語)的疑問。

.NET 開發人員,你一定讀過 MSDN Library,早些年,MSDN Library 可說是 .NET 開發人員最好的朋友。但近年來,大量的機器翻譯,讓 MSDN Library 品質直線下降。其實,各位所提交的建議,原有一群義工人士,是"真"人工審核。後來不為何,義工人士不斷消失。小弟有幸加入這個消失中的義工團,就我而言,審核分專業和非專業,我不可能專精整個 MSDN Library 技術,在審核非專業內容時需要大量的時間。由於下班後時間有限,只能慢慢放低義工時間,最後,好像能瞭解,機器人造成大量的品質不良,要靠少數幾個人來改善是有難度的。

Micosoft Docs的Github開放開源

目前微軟新版文件庫叫 Microsoft Docs,這一個以開源為導向的文件庫,所有文件內容都開源開放在 Github 上,目前繁體中文化正在火熱進行中(但目前還有很大比例,你點擊後還是看到英文內容),既然開源開放,那麼只要你有心,人人都能成為Microsoft Docs繁體中文貢獻者。目前有二種途徑可以參與:

ASP.NET Core-Tag Helpers無IntelliSense效果

ASP.NET Core-Tag Helpers無IntelliSense效果

在 ASP.NET Core 的 Views (Razor) 提供了一個新的 Tag Helpers,Tag Helpers 有別於 ASP.NET MVC 的 Html Helpers。在 Visual Studio 2017 可以新增「ASP.NET Core Web Application (.NET Core)」或「ASP.NET Core Web Application (.NET Framework)」專案:

  1. 選擇 ASP.NET Core 1.1
  2. 選擇 Web Application

我們開啟 Views/About.cshtml 貼上以下程式碼:

<form asp-controller="Movies" asp-action="Index" method="get">
    <p>
        Title: <input type="text" name="search" />
        <input type="submit" value="Filter" />
    </p>
</form>
tag helper render html

可以看到 asp-* 的 Tag Helpers 會被解析為正常的 HTML 內容。但如果是手刻程式嗎呢?

input asp- tag helper
edit asp- tag helper

可以看到,不論是直接輸入 asp- 或修改舊的程式碼,Visual Studio 2017 不會有任何 IntelliSense 提示。這...

使用dotnet watch讓ASP.NET Core擁有自動編譯功能

使用dotnet watch讓ASP.NET Core擁有自動編譯功能

如果你有跟著 ASP.NET Core (1)(2) 篇練習的話,會發現開發上有那麼些許的不方便,就是我們要不斷中斷dotnet程序,重覆dotnet builddotnet run的流程。我們希望後端的 C# 也能像前端擁有 LiveReloadReact Hot Loader 的功能,在 Visual Studio 我們介紹過 Reload 來解決此一問題,而在.NET Core dotnet watch 套件可以實現自動編譯的工作。

部署ASP.NET Core至Azure Web APP

發行ASP.NET Core至Azure Web APP

前篇:使用ASP.NET Core建立Web API服務,我們使用 VS Code 來開發了一個.NET Core(ASP.NET Core) 的 Web API 服務,接著我們要把開發好的服務發行至Microsoft Azure來執行。和前篇相同,如果是使用 Visual Studio 那麼發行動作只在點選之間就完成了,不過這篇,我們依然是不採用 Visual Studio 來實作,還是使用 VS Code 與指令來完成。

初始化 git

在 VS Code 切換至 git 圖示,點擊"初始化 git 儲存機制"並且在訊息輸入第一次簽入的資訊。

vs code - 初始化 git 儲存機制

使用ASP.NET Core建立Web API服務

使用 ASP.NET Core 建立 Web API 服務

.NET Core(ASP.NET Core)與之前的 ASP.NET MVC / ASP.NET Web API 兩套不同的 Framework 不同,ASP.NET Core 中的 MVC 整合了 Web API,現在要建立 API 或 Web 都將更為簡單,因為整合後的 ASP.NET Core MVC 基於相同的程式碼與管線(pipeline)。

開發環境

ASP.NET Core 的跨平台特性,使用開發工具與開發環境的選擇相當多元。

.NET Core SDK 安裝:

安裝頁面有各平台(Windows, Linux, Mac, Docker)的安裝指南,照步驟安裝即可。

開發工具方面:

  • Visual Studio 2015 Update 3 + .NET Core Tooling Preview 2 for Visual Studio 2015
  • Visual Studio Code + C# for Visual Studio Code(Extensions)

使用 Windows 的開發者,地表最強的 Visual Studio 當然是最好的選擇,如果使用 MAC(Windows) 那 VS Code + C# 擴充套件後也不差。如果 Visual Studio 2015 Update 3 並安裝了最新的 .NET Core Tooling Preview 2 for Visual Studio 2015 ,那麼已包含 .NET Core SDK 的安裝。

如果 VS Code + C# 擴充套件,使用起來不是很順(例如,IntelliSense、提示加 using 等),看一下 OmniSharp Log (檢視 → 切換輸出)是否正常。重開幾次 VS Code 看看。

測試工具:

  • POSTMAN
  • Fiddler

兩套測試工具都行,挑喜歡的用即可。

範本工具:

安裝指令:

npm install -g yo 
npm install -g generator-aspnet
    

這是延伸自 yeoman 的範本產生器,在不使用 Visual Studio 的情況下,它會很有幫助。

以下範例,讓我們使用 VS Code 來走一次建立 ASP.NET Core - Web API 的過程。相同的過程,使用 Visual Studio 的體驗與以前沒有太大差異,更重要的是,使用 VS Code 可以讓我們更瞭解 .NET Core 運作流程(因為要下指令),所以選擇使用指令與 VS Code 來進行實作。