Duran 的技術冶煉廠

熱門文章 (Popular Post)

By :
Azure DevOps Service/Server 內所建立的工作項目 (Work items)  與 Git 版控歷史紀錄 (如:Branch、Pull Request 與 Commit) 是可以建立雙向連結的,其建立連結的好處包含:
  1. 在工作項目內的 Development 欄位中,顯示與此工作項目有關 Git 操作,快速的了解歷程與程式修改紀錄
  2. 從 Git 的歷史紀錄中,了解 Commit 與哪個工作項目有關
  3. 更新版本時,管理人員能清楚了解那些工作項目 (Bug 修正、新功能) 已經完成

本篇文章將簡單介紹一個小技巧,如何透過 Git Commit Message 與工作項目建立連結,若有錯誤或任何建議,請各位前輩不吝提出




By :

本篇文章記錄舊版本 Team Foundation Server (現稱 Azure DevOps Server) 升級至新版本 Azure DevOps Server 其中一種方式:透過 Team Foundation Server Tools 備份還原功能進行升級。Team Foundation Server Tools 大致上可以分成兩種:

  1. Team Foundation Server Power Tools (需另外安裝,適用於 TFS 2010 使用) 
  2. TFS Database Backup/Restore Tool (不須另外安裝,適用於 TFS 2012 以上版本)

本篇文章將介紹如何透過 Team Foundation Server Power Tools 於 TFS 2010 進行備份,在 TFS 2013 進行還原與升級流程。




By :

因為微軟官方已經將連結移除,這裡提供之前我使用的版本,下載前請先看過最下方免責聲明,若有疑慮請勿下載:


https://distudio.blob.core.windows.net/duran/LPSV2.D1.zip



免責聲明:

本網站對於任何使用或引用本網站網頁資料引致之損失或損害,概不負責。本網站亦有權隨時刪除、暫停或編輯本網站所登載之各項資料,以維護本網站之權益。除法律有強制規定外,在任何情況下,本網站對於 (1) 使用或無法使用本網站之各項服務;(2) 經由本網站取得訊息或進行交易;(3) 第三人在本網站上之陳述或作為;以及 (4) 其他與本網站服務有關之事項所致生之任何直接、間接、附帶、特別、懲罰性或衍生性損害,一概不負賠償責任。


By :

 前言

這是 Azure DevOps Server 2020 安裝筆記,安裝過程中有許多選項,若有些內容用不到則不需要勉強安裝,越多的安裝選項會需要設定更多內容 (如:防火牆、連接埠...等)。一般來說如果您需要安裝離線版,多數是資訊安全限制且有網路限制的環境,若是無法對外連線至特定服務 (如:下載 JRE),則有較多事前準備工作,要有心理準備。請先確認注意事項,滿足條件後再開始進行安裝。




By :

 前言

這是一篇舊版軟體安裝操作紀錄,主要因為有些公司仍使用舊版的 TFS 2012、2013、2015、2017...等。若沒有情境考量,仍建議直接使用最新版本且功能完善 Azure DevOps Server,避免後續升級流程遇到問題造成不必要的時間浪費。本篇文章僅為個人筆記,提供有興趣的朋友參考。

注意:TFS 與 SQL Server 可以安裝在同一台伺服器,若有需求想要分開安裝, TFS 與 SQL Server 則必須加入 Active Directory。




By :

最近因為工作關係,想要在 Azure 上啟用一台 Windows 10 並安裝 Docker Desktop for Windows 進行開發與測試。沒有想太多直接開虛擬機器直接進行,沒想到失敗好幾次,簡單紀錄一下哪一個規格的 Windows 10 VM 可以成功,提供給有興趣的朋友參考。本篇文章若有錯誤或任何建議,請各位前輩不吝提出,謝謝。




By :

Application Insight 也適用於地端伺服器 (on-premises servers),若您有內部伺服器使用 IIS 部署 ASP.NET 程式,則可以安裝 Application Insights Agent 進行監控。使用 Agent 最大的好處就是不需要修改程式碼並且重新部署,只需要透過 PowerShell 進行 線上下載檔案 方式安裝。本篇文章將簡單介紹如何部署 Application Insights Agent 於地端伺服器,若有錯誤或任何建議,請各為前輩不吝提出,謝謝。




By :

ASP.NET MVC 網頁應用程式 (含 ASP.NET Core MVC) 與過去 Web Form 專案架構有所不同,所以在使用 IIS IP 位址與網域限制功能時並沒有這麼的直覺。過去在 ASP 或 Web Form 應用程式,只需要 內容檢視 > 選取該 asp 或 .aspx 檔案 > 切換功能檢視 > IP 位址與網域限制,即可限制該網頁存取。


但 ASP.NET MVC 應用程式 (包含 ASP.NET Core MVC) 呢? 似乎沒有辦法透過 IIS 介面方式進行設定 ?   實際上是可以的,本篇文章皆簡單介紹如何透過 IIS IP 位址與網域限制功能 對 ASP.NET MVC 應用程式中特定網頁限制存取,若有錯誤或任何建議,請各位先進不吝提出。






By :

對於開發人員而言,如何在 Production 發生問題找到 root cause 是一門學問,有別於在開發環境可以透過 Debug 工具找出問題,Production 需要在不影響維運與資訊安全情況線發現問題所在。舉三個例子:


  1. 在開發與測試環境,你可以隨意輸入測試資料以檢測問題所在,但在 Production 環境,你不應該也不被允許進行測試,因為可能會影響正常營運。
  2. 測試環境出錯時,你可以將詳細錯誤訊息顯示在畫面上,但在 Production 環境,詳細的程式訊息很可能變成有心人攻擊的目標。
  3. 開發過程中,程式邏輯錯誤發生在你撰寫程式、執行程式時,但在 Production 環境,錯誤可能發生在下班時間。 


不知道如何在 Production 發現效能問題?  那你一定不知道 APM


By :

 因為 Markdown 容易撰寫的特性,除了部落格,越來越多文件透過 markdown 撰寫 (副檔名 .md),但仍有許多客戶因為不熟悉 Markdown,手邊一時之間也沒有工具可以瀏覽,希望能使用既有的 word 、pdf 格式觀看文件,這時候就遇到格式轉換問題。 今天要介紹這一套萬用文件轉換工具 Pandoc,除了能達到 Markdown 轉換成 docx,也支援相當多輸出、輸入格式,相當方便。






By :

 因為工作關係,遇到有個 App Services 需要從 Azure Key Vault 上取得連線字串與秘密 (Secrets) 需求。實作的方式相當多種,這次是以角色為基礎的存取控制 (Role-Based-Access-Control) 方式來存取 Azure Key Vault,達到可以不需要儲存任何 秘密資訊 web.config 、 appsetting.json 寫死程式裡,只有該授權的角色可以取得秘密資訊的效果。本篇文章若有錯誤或任何建議,請各位前輩不吝提出。




By :
在 Visual Studio 2017/2019 後的版本,增加 Performance Profiler (效能分析器) 功能,讓您可以在開發階段確認程式效能,避免程式上版至正式環境後才發現效能佳的情況發生。效能分析器可以收集的指標相當多,包含 
  1. .NET Async (.NET 非同步)
  2. NET Counters (.NET 計數器)
  3. NET Object Allocation Tracking (.NET 物件位置追蹤) 
  4. CPU Usage (CPU 使用量) 
  5. Database (資料庫) 
  6. Events Viewer (事件檢視器) 
  7. Memory Usage  (記憶體使用)
  8. Application Timeline (應用程式時間軸)
  9. 與 Instrumentation (檢測設備)






By :

 因為工作的關係常常需要搭乘高鐵,累積了不少的點數,這些點數可以用來兌換 車票 與 商品 (詳細兌換內容可以參考 高鐵會員TGO高鐵會員TGO點數 365)。在累積紅利點數前,記得先申請會員,在購買車票、回數票 與 月票時輸入會員編號即可累積。 整體算起來回饋雖然不多 (約等同票價 9 折),但常常出差的朋友,可以考慮累積點數來兌換車票、商品過過癮。


想要累積點數,記得先加入會員


Tag : , ,

By :

 終於到 如何為 ASP.NET Core 與相依服務建立執行狀態檢查 系列文章最後一篇:自訂 Health Checks 監控 Shared folder 狀態。 若讀者有閱讀原始碼: AspNetCore.Diagnostics.HealthChecks(GitHub) 或微軟文件:ASP.NET Core 中的健康狀態檢查,應該會發現 HealthChecks 提供非常多的套件讓你監控多種服務運作狀態。但偶有些想要監控的服務沒有套件支援,那該怎麼辦呢 ? 在這一篇文章我們會給簡單的範例,說明如何自訂方法來監控分享資料夾 (Shared folder) 是否可用。


本篇文章範例位置:HealthCheckDemo ,若覺得講解內容過於陌生,建議從第一篇開始閱讀




By :
ASP.NET Core Health Check 也能與 Azure DevOps Release 進行整合,於佈署前確認相關服務是否正常。若相依服務有運作失敗的情況,會不允許進行佈署,藉此可以先排除有問題的服務,再進行上版,降低問題複雜度。 


注意:因應佈署策略不同,可能會進行停機佈署,須注意不要將正常停機程序,因為Health Check變成阻礙佈署的絆腳石





By :
系統維運內對於網站狀態監控是不可或缺的,雖然建立了 heartbeat 與 status 提供監控系統做即時監控,但沒有及時的處置,仍會出現服務中斷的時期,進而可能損及企業利益 (如:影響交易)。本篇文章透過 Azure Load Balancer (負載平衡) 與 ASP.NET Core HealthChecks 建構相依服務監控與即時切換機制。本篇文章若有錯誤或任何建議,請各位先進不吝提出。


註: Azure Application Gateway 與 ASP.NET Core HealthChecks 也能進行相依服務監控





By :

透過 HealthChecks在監控各種服務時,您能為每個服務加上標籤 (Tags),後續自訂 Health Check Response 時即可透過這些標籤進行過濾動作,只取得/排除特定標籤服務運作資料。當您遇到下列者幾種情境,HealthChecks 的 Tags 可能會幫上不少忙:

  1. 管理人員/監控軟體 會將服務做分類,會比較方便進行監控與釐清問題,像是以網站/資料庫/儲存體分類
  2. 依據權限分類,DBA 只能看見目前 資料庫 運作情況,而維運人員可以看見所有服務運作情況



By :

 經過前面三篇文章的介紹,我們已經知道如何安裝設定 HealthChecks、監控多個相依服務 與 自訂 HealthChecks 呈現結果(呈現每個相依服務)。在這一篇,我們將簡單介紹如何透過相關套件,讓相依服務運作狀態以圖形化介面呈現。


本系列實作的範例程式:HealthCheckDemo




By :

透前一篇: Health Checks 監控 SQL Server, WebAPI 與 Redis 健康狀態, 你大概已經知道如何監控不同的服務,但總會懷疑為什麼只能取的整體的狀態態,我們能不能看到每一個服務的狀態呢? 答案是肯定的,本篇文章將簡單介紹如何自訂 Health Checks Response,讓所有的服務運作情況一目了然!


那有美美的圖形介面給老闆看? 答案是有的,在下一篇:ASP.NET Core Health Checks UI 圖形化介面呈現服務健康狀態 會詳細說明。





By :

 上一篇文章 ASP.NET Core Health Checks 安裝與設定 中我們簡單說明如何設定並回覆目前網站運作狀態。但 HealthChecks 套件不僅僅如此而已,還能監視 SQL Server(資料庫), Redis(快取服務) 與其他 WebAPI 營運狀態。本篇文章將分別介紹如何設定這三項服務監控,若有錯誤或任何建議,請各位先進不吝提出,謝謝。


本系列實作的範例程式:HealthCheckDemo



By :
相對於使用本機快取與資料庫快取,個人偏愛使用額外的 Redis 服務作為分散式快取機制。一來不會與本機網站與服務共用資源,在要求效能的情況下相互影響,二來未來若有需要,直接作為為分散式架構使用。另外,若不想要自己維護 Redis Server,您可以考慮使用 Azure Cache for Redis,快速建立又容易維護。 本篇文章將簡單說明如何在 ASP.NET Core / ASP.NET Core 5 上使用 Redis Cache,若有錯誤或任何建議,請各位先進不吝提出。





By :

監控在重要系統維運是非常重要的一環,隨時注意 網站服務伺服器資料庫 運作是否正常。 在ASP.NET Core 2.2 - 3.1 有個相當好用套件 - HealthChecks,讓開發人員可以透過撰寫簡單設定語法建立健康檢查機制,確認目前服務營運是否正常。他支援的服務相當的廣,除了簡單的 WebAPI、SQL Server,還支援 RabbitMQ、Redis、Azure Service Hub、Kafka、MongoDB、Kubernetes、SignalR...等多項服務 (可以參考 AspNetCore.Diagnostics.HealthChecks - GitHub)






By :

前陣子協助客戶啟用 SQL Server 保存工作階段 (SessionState) 狀態資料過程中,客戶提到 正式環境(Production) 有啟用 AlwaysOn 可用性群組。 而在 啟用 SQL Server 保存工作階段 所建立的資料庫,會建立 SQL Agent Job,定期刪除過期資料 (DeleteExpiredSessions)。 因為 Secondary replica database 為 ReadOnly,故會得到錯誤訊息:


Failed to update database "ASPState" because the database is read-only


透過 SSMS 展開該資料庫 (預設名稱為 ASPState,若建立過程中,有自訂名稱則請選擇正確的資料)。在 SQL Server Agent > 作業 (Job) >看見 ASPState_Job_DeleteExpiredSessions 作業。




By :
網站應用程式經常使用工作階段 (Session) 來記錄一些相關資訊,方便在某些情境上使用。在 IIS,保存 Session 有多種方式,包含 處理中 (InProc)自訂 (Custom)狀態伺服器 (StateServer)SQL Server ...等幾中方式 。在單一 IIS 伺服器情況,我們會設定為 處理中 (InProc),因為沒有負載平行 (Load balancer) 需求,所以不需要將 Session 取出與其他 IIS 進行分享。

但在有負載平行架構下,倘若沒有將 Session 取出並進行管理,會發生無法取得 Session 的情況下,網站運作即可能發生問題。常見的 SessionState  (工作階段狀態) 有:
1. 狀態伺服器:透過 ASP.NET State Service 來儲存 Session ,啟動時需要確認此服務有啟動
2. SQL Server:透過 SQL Server 來儲存 Session,理所當然,你需要一台 SQL Server
3. 自訂:常見是透過 Redis 來作為 Session 儲存狀態,你需要透過套件與一台 Redis Server

這些方式各有優、缺點,有些效能就好;有些則可以儲存大量 Session;有些則需要額外服務才能使用。如何使用則依據您的需求而定。本篇文章將簡單介紹在 在 IIS 上如何使用 SQL Server 保存工作階段,若有任何錯誤或建議,請各為前輩不吝提出,謝謝。






By :

 最近常常遇到運行一段時間的 Windows 虛擬機器 無法遠端連線的情況發生,這裡提供一些常見的情境(忘記密碼內部發生錯誤) 與 解決方法給有興趣的朋友參考。 


注意:本篇所提供方法僅供參考,並不為管理上與使用之資訊安全性背書,對於任何使用或引用資料引致之損失或損害,概不負責。用遠端連線有風險,建議若非必要,請使用 Azure 堡壘 (Azure Bastion) 或其他更安全方式進行管理



By :

因為工作關係,需要驗證 Azure DevOps Server 與 GitLab 之間,能不能互相整合 repositories,開啟這一篇安裝 GitLab 之旅,並簡單紀錄一下如何快速在 Azure 環境安裝 GitLab 流程,提供習慣使用 GitLab,但又沒有伺服器 (或不想花時間安裝 linux) 的團隊參考。本篇文章若有錯誤或建議,請各位前輩不吝提出。






Tag : , ,

By :

 近年來, Markdown 語法越來越熱門,他的易讀、快速撰寫的特性深受許多人喜愛,是一種網路內容的寫作、上稿用語言。久而久之,支援 Markdown 的編輯器也越來越多。你知道嗎 ? Notepad++ 除了比對功能,也可以支援 Markdown 檢視 與 HTML 轉換唷 !







By :

前言

Azure DevOps Agent On Linux 與其他 CI/CD 一樣,安裝相當簡單,且可以安裝在 Windwos/macOS/Linux 作業系統上。有很多朋友問到 Linux Agent 與 Windows Agent 有什麼不同,這裡簡單條列一些特性,讓大家理解要哪一種比較適合自己

  1. Linux Agent 一般情況下,執行速度較快,且 Azure Linux VM 較便宜
  2. Windows Agent 一般來說較為安全 (對於資安完全沒經驗的朋友,使用 Windows 會輕鬆一點)
  3. 若您的程式是 .NET Solution (非.NET Core),只能在 Windows 作業系統進行 Build,請選擇 Windows
  4. Java ...等具跨平台特性 Solution,可以在 Linux 與 Windows Agent 執行
  5. 找一個您熟悉的平台,安裝套件時比較不會這麼辛苦


本篇文章將一步步說明如何安裝與設定,給有興趣的朋友參考。若有任何錯誤或建議,請各位前輩不吝提出,謝謝。

若您想要知道如何安裝 Agent  在 Windows 上,請參考這篇:
Azure DevOps Agent 安裝流程說明 (Install Windows Agent)





By :

過去在開發 ASP.NET 網站應用程式時,若想要使用者強制透過 HTTPS 瀏覽網站,我們會使用 IIS Rewrite Module 來進行轉址。通常會在首頁、註冊/登入、付款...等,網頁進行 Rewrite 進而確保安全性。 在 ASP.NET Core 專案中,開發人員透過現成的 Middleware ,可以更輕鬆的控制路由。本篇文章將簡單介紹如何設定自動將使用者從 HTTP 轉向 HTTPS,若有任何錯誤或建議,請各位前輩不吝指教,謝謝。 


註:本文章環境為 .NET Core 3.1





Tag : ,

- Copyright © Duran Hsieh @ Duran 的技術冶煉廠 - Date A Live - Powered by Blogger - Designed by Johanes Djogan -