問題
最近同事透過 K6 進行 WebAPI 壓測時,
發現當 Thread 數多時,就會出奇怪的錯誤,
例如 在 進入 Middlewares 中取好資料到 UserRols 中,
然後在 Controller 中判斷是否存在某個角色時 UserRols.Any(ur => ur.Code == "Admin") ,
本應有資料的,卻變成沒有資料。
研究
原本懷疑是不是有 static 物件互相干擾,但沒找到。
現來發現有一段程式碼下面有蚯蚓符號的警告,
看了那個 Function 是 async,
但呼叫的地方卻沒有加上 await ,
於是將 await 加上去,再測試一次,就沒出現錯誤了。
有時使用 VS.NET 開發時,
都只專注在 錯誤 卻忽略了 警告,
尤其是 CS1988 少加上 await 的這個警告,
更有可能會造成系統在多人操作時,產生非預期的錯誤。