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