[C#] 如何在 app.config 存放「物件形式」陣列資料

當需存放多筆「數值」於 app.config 中時,最簡單的作法就是使用特殊符號將字串分開,後續再從程式碼中以切割字串方式轉換為陣列;但有時會需要存放「物件形式」陣列資料,例如設定單筆伺服器可能就會包含名稱、位置、參數等資訊,而此時就可以透過自定義 ConfigurationSection 來實現。

...繼續閱讀 »

[效能調教] 建立非同步射後不理 LOG 寫入機制

面對大量且重要性低的 LOG 紀錄需求(如:統計功能使用量),可以考慮套用非同步射後不理機制來節省 Web API 被占用的時間,把資源留給其他更重要的項目;文末並針對 SynchronizationContext 議題進行探討,由於在這種情境下會有 context 消失問題存在,因此需設定 ConfigureAwait(false) 來讓後續作業順利進行。

...繼續閱讀 »

[效能調教] 使用 NanoProfiler 監看特定程式區塊效能及 DB 回應時間

當面對回應緩慢的 Web API 時,當下最想了解的莫過於各項行為對於時間的消耗,此時我們可以透過 nanoprofile 幫我們記錄下這些資訊,特別是在操作 DB 所耗費的時間,更是不費吹灰之力的自動逐條詳列,並可重現當下呼叫 SP 所傳入的參數值,確實是調教效能的好幫手阿!

...繼續閱讀 »

[C#] 排除無須納入交易的查詢,避免產生不必要的分散式交易 (Distributed Transaction)

當不小心啟用分散式交易機制時,且環境設定不允許時,就會產生【已停用分散式交易管理員 (MSDTC) 的網路存取。請使用元件服務系統管理工具啟用 DTC,以使用 MSDTC 安全性設定中的網路存取】錯誤訊息,此時可以透過 new TransactionScope(TransactionScopeOption.Suppress) 排除不需要納入交易的部分,避免分散交易的情境產生。

...繼續閱讀 »

[ASP.NET] 多台 Web 伺服陣列透過 SQL Server 保存共同工作階段狀態 (session state)

ASP.NET 網站預設 session state 只存活在對應 web server 的 IIS 中,也就是說在多台 web server 服務或具有 failover 機制下,當切到另一台 web server 的時候喪失所有 session state 資訊,因此可以考慮將 session state 存放在 SQL Server 中,讓所有 web server 共享相同 session state 資訊。

 

...繼續閱讀 »