The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

設定 .NET 的 HttpClient 使用 HTTP/2 通訊協定發出 HTTP 要求

前幾天把我的部落格網站啟用 HTTP/2 通訊協定版本,結果意外發現我有個用 WebClient 抓取網頁的程式壞掉了。其實我一開始並沒有發現是 HTTP/2 造成的問題,鬼打牆了一段時間才意識到可能是 HTTP 版本差異造成的問題。這篇文章我就來分享幾種不同的 HttpClient 程式寫法,讓你用 HTTP/2 通訊協定版本抓回遠端 Web 伺服器上的網頁。

... 繼續閱讀 ...

ASP.NET 部署到 Azure App Service 如何使用 Log stream 查看應用程式紀錄

當 Web 應用程式上傳到 Azure App Service 之後,開發人員第一個要面對的問題,就是要怎樣偵錯(Debug)?在本機開發應用程式通常開發工具都會幫我們整理好各種資訊,但是上到雲端環境後,很多人就會顯得手忙腳亂,有時候說是「瞎子摸象」也不為過,非常痛苦。這篇文章我打算帶大家入門,教大家怎樣用免費又簡單的方式使用 Log stream (記錄資料流) 查看應用程式執行紀錄!

... 繼續閱讀 ...

開發與部署網站時需注意不要使用到 ERR_UNSAFE_PORT 不安全的埠號

我昨天在授課的時候,突然遇到 Chrome 瀏覽器無法瀏覽網站的情況(ERR_UNSAFE_PORT),我踩到一個不知道算不算罕見的地雷,在深入瞭解之後,覺得有必要寫成文章提醒大家,因為你還真的很有可能會在不久的將來遇到這個問題,看完文章才不會讓你日後鬼打牆太久,讓我們繼續看下去。

... 繼續閱讀 ...

使用 MSBuild 建置方案檔(sln)與建置專案檔(csproj)的陷阱與注意事項

我一年大概都會幫幾家企業導入 Azure DevOps Server 平台,最近幫客戶導入的過程遇到了一個難題。一個方案檔中有 9 個專案,其中有 4 個 .NET Framework 4.7.2 類別庫專案、1 個 .NET Framework 4.7.2 的 ASP.NET Web Forms 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Standard 2.0 專案、2 個 .NET Core 2.1 類別庫專案、1 個 .NET Core 2.1 的 ASP.NET Core 專案。很少看到一個案子用這麼混搭的技術,而這個案子要做 CI/CD 確實也遇到了問題。這篇文章我將說明問題與解決方法!

... 繼續閱讀 ...

利用 SynchronizationContext 讓 ASP.NET 背景執行緒取用 HttpContext 資訊

我們在寫 ASP.NET (.NET Framework) 的時候,可能會需要利用非同步作業在背景執行一些工作,同時可能也需要偶爾取用 HttpContext 相關資訊。事實上當我們在 ASP.NET (.NET Framework) 使用 await 等待一個 Task 時,會自動紀錄當下的 SynchronizationContext,並在 Task 完成工作後,取得原始 執行緒 (Thread) 中的資訊。但是如果我們也想在 Task 中取用原本執行緒的內容 (例如 HttpContext 資訊),我們就需要學會如何自行利用 SynchronizationContext 來取用原始執行緒中的內容。今天這篇文章,我將透過一段簡易的程式碼與一個實際應用情境,說明 SynchronizationContext 的運作方式,讓你知道如何正確的使用它。

... 繼續閱讀 ...

ASP.NET MVC 5 搭配 EF6 無法啟用 MvcBuildViews 建置檢視頁面的解法

今天在示範 MSBuild 如何設定 MvcBuildViews 屬性時,發現只要有 *.edmx 存在於專案中,建置的時候就會導致出現 Could not load type 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider' 的問題,這個問題想從 Visual Studio 2019 裡面很難看出個端倪,必須改用 MSBuild 才能看出脈絡。今天這篇文章,我將分享這個問題的細部分析,並提供解決方案。

... 繼續閱讀 ...

如何強制關閉 Azure Web Apps 內建支援的 PHP 執行環境

前幾天有個朋友告知部署在 Azure Web App 的網站被駭客入侵,可能被植入木馬後門之類的程式,我上去查看之後發現,果然被寫入了一個編碼過的 PHP 程式,確認為後門程式。明明是一台只有跑 ASP.NET 的網站,隨便被植入一個 PHP 檔案,竟然也能被執行。而且還沒有關閉的管道,連 Azure Portal 都無法設定關閉。本篇文章將分享強制關閉 PHP 的方法,如果有人也將網站跑在 Azure Web App 網站上,建議花點時間設定一下。

... 繼續閱讀 ...

如何在執行 Web 單鍵發行時,一併輸出完整的 pdb 偵錯符號檔

我在前些陣子開了好幾個梯次的 Visual Studio 2015 開發與偵錯技巧 課程,課程中有提到我們在對 .NET 應用程式進行偵錯時,有個最重要的 pdb 符號檔必須隨著專案一起發行,才能夠在執行的過程中得知完整的偵錯資訊,否則不但無法在程式執行過程中載入偵錯工具 (Debugger),連例外狀況發生時也將無法得知錯誤發生的呼叫堆疊與程式碼行數。但我們在 Visual Studio 常用的 Web 單鍵發行功能,預設設定是採用 Release 方案組態進行發布,而且預設還會將所有 pdb 符號檔排除,也就是透過 Web 單鍵發行的網站,將完全不會有相對應的 pdb 檔案,本篇文章告訴該如何設定。

... 繼續閱讀 ...