UrlEncode() 與空白變加號問題
在 ASP.NET Core 遇到轉換網址中文及特殊字元的需求,由於 .NET Core 不適合再用 System.Web.HttpUtility,爬文查到有個替代品 - System.Net.WebUtility.UrlEncode,開開心心上路卻踢到鐵板。問題出在 System.Net.WebUtility.UrlEncode() 會將空白字元轉成加號,而 IIS7+...
View ArticleASP.NET Core View 中文變 & # x4E2D; & # x6587;
發現 ASP.NET Core 有個特性造成困擾。我們都知道在 cshtml 以 @textFromServerSide 嵌入字串時,預設會被 HtmlEncode 以防止 Cross-Site Scripting 攻擊,如要將字串視為 HTML 標籤處理需額外呼叫 Html.Raw()。但在 ASP.NET Core 裡,結果跟我原本想像不同,例如以下...
View ArticleCODE - WebClient 下載檔案自動取得檔名
透過 WebClient.DownloadFile() 或 DownloadData() 下載檔案對 .NET 老鳥而言是雕蟲小技(參考:CODE-使用C#程式從網站下載檔案 ),但此種寫法檔名需自行指定。若下載對象非靜態檔案,伺服器端程式會透過 Content-Disposition Response Header 傳回檔名供客戶端參考,WebClient 是否能由 Response Header...
View Article黑暗執行緒又搬家囉~
部落格又搬家囉,來不及參與本站過去的新同學應該不知"又"搬家的又字而來,先來段白頭宮女話當年好了...我從 2004 年 1 月開始寫部落格,如今已堂堂邁入第 14 個年頭。想當年部落格興起,我也趕流行在 PCHome...
View Article【茶包射手日記】空白結尾捉鬼記
紀念抓了個把小時的茶包。同事回報一個詭異狀況,某個使用者登入時遇到異常,由於是線上系統,只能靠 Log 推敲還原事發經過,但卻有個矛盾之處:Log 顯示使用者只登入過一次,但登入後的初始化作業 Log...
View Article我的 Linux 作業系統考察
ASP.NET Core 最迷人之處就在於可以跨出 Windows 象牙塔,在伺服器的選擇上海闊天空,藉著改版部落格我已踏出第一步,接著我想真實挑戰跨平台這件事。 依據 W3Techs 最新調查,統計全世界一千萬個網站(其調查方法可參考這篇),其使用作業系統比例:Unix 佔 68.1%,Windo... Read More
View ArticleCentOS 安裝筆記
將運作十年的 ASP.NET WebForm 的部落格改寫成 ASP.NET Core,我的下一步是挑戰將部落格搬到 Linux 上執行,才不辜負 .NET Core 可跨平台的能力。考察過 Linux 作業系統,我選擇了 CentOS,主要考量其以穩定性著稱,企業界接受度較高,將來或許有機會靠它混... Read More
View Article【茶包射手日記】換帳號執行程式產生多餘空白
同事回報一枚詭異茶包,某上古神獸級的老 VBScript 排程,在更換執行身分後所輸出的固定欄寬文字檔錯誤,中文欄位右側填補空白數不對,多出三個空白。但讓人無法理解的是:程式完全沒動,換了執行身分權限不對還能理解,執行成功但結果多出空白是什麼鬼? 取回 Log 分析並檢視程式碼,推測與字數計算邏輯有... Read More
View Article在 DOS 批次檔寫入 Windows 事件
介紹最近這兩天學到的好用 DOS 指令。 工作上有些排程我還是習慣靠 DOS 批次檔解決,雖然這年頭 PowerShell 已是 Windows 管理腳本的主流,但批次檔簡單易上手,串接執行檔或 DOS 內建作業,例如:COPY、ROBOCOPY、7Zip...,不花太多腦筋三兩下便搞定。因此批次檔... Read More
View ArticleVBScript 語系切換技巧
被 VBScript 語系問題咬傷多次,前幾天分享換帳號執行程式產生多餘空白一文後,在臉書專頁與留言區都接到網友回響,雖然晚了十年學會,日後用到的機率也微乎其微,還是寫篇筆記備忘。 先前遇到的狀況是 Windows 語系被設成英文,導致中文字元被解析成問號衍生錯誤。然而,除了依賴作業環境語系正確設定... Read More
View Article使用 curl 批次檔觸發排程作業網頁
在工作上有些系統選擇將定期執行作業的邏輯寫在 ASP.NET 網站,再設定 SQL 排程 (SQLAgent) 或 Windows 排程器 (Task Scheduler) 呼叫它。這麼做的好處是邏輯完全集中在網站專案,不致分散於網站及主控台程式兩處(雖共用程式庫已可大幅減少重複,但仍比單一網站複雜... Read More
View Article【茶包射手日記】Windows 我的圖片中文檔名的祕密
同事報案,測試網頁上傳檔遇到中文檔名上傳變英文的怪事,仔細檢查後有了驚奇發現。檔案來自 Windows 內建範例圖片(C:\Users\Public\Pictures\Sample Pictures),檔名原本是英文,但檔案總管顯示的卻是中文檔名,因此選取檔案上傳時產生「自己正在上傳中文檔名圖檔」的... Read More
View Article.NET 4.7.2 Windows 10 版本要求與版號常識
因安裝軟體需求,要在 Windows Enterprise 上安裝 .NET 4.7.2,卻得到「這個作業系統不支援 .NET Framework 4.7.2」訊息。 呼叫 WinVer 查了版本,版本為 10.0,組建 10240。 查到這裡我有點疑惑,Windows 10 版號不是 1703... Read More
View ArticleASP.NET MVC 針對電腦與手機提供不同 OutputCache
OutputCacheAttribute 是改善 ASP.NET MVC 網站效能的利器,只需在 Action 加註 [Output] 並指定 Cache 保留時間,其他什麼都不用做就得到跑一次程式應付數十上百次請求的效能提升,能提升回應速度並降低資源消耗。至於因應不同類型請求快取多份內容,Outp... Read More
View Article【茶包射手筆記】Windows 10 升級後 Hyper-V VM 無法啟動
小筆記一則,前幾天升級 Windows 10 1803,隔了兩天要開啟 Hyper-V VM 出現錯誤。 過去有類似經驗,升級 Windows 前如有使用「儲存」功能的休眠 Hyper-V VM,須先「刪除儲存狀態」,視為不正常關機再啟動。 這次狀況不同,VM 啟動失敗,彈出錯誤: Emulate... Read More
View Article範例教學:使用 ASP.NET MVC 打造 WebAPI 服務
前言 閒聊 - Web API 是否一定要 RESTful? 一文提到我個人偏好用 ASP.NET MVC 寫 WebAPI,讀者 Mark 留言希望能有簡單範例參考。這篇文章將示範用 ASP.NET MVC 從無到有打造一個簡單 WebAPI 服務,提供給初學 ASP.NET MVC 不知如何下手... Read More
View ArticleASP.NET Core + Nginx on CentOS 安裝筆記
先前文章已初步驗證 ASP.NET Core 程式可以不經修改直接搬到 Linux 執行,接下來得真的把它配置好才能上戰場。 ASP.NET Core 內建的 Kestrel 伺服器輕巧但功能陽春,實務上需搭配 Reverse Proxy 對外提供服務,在 ASP.NET Core 值得學嗎? 提過... Read More
View ArticleASP.NET Core 練功筆記 2 – Ubuntu + SQLite + Dapper
繼續 ASP.NET Core 專案練習,本階段的戰術目標:嘗試在 Linux Ubuntu 16.04 上跑 .NET Core + SQLite + Dapper。Ubuntu 遠端桌面設定 Ubuntu xrdp 支援使用 Windows 的「連線遠端桌面」程式(RDP Client)登入桌面環境,還可在主機螢幕操作桌面之外另開一個虛擬獨立桌面環境。 但有個問題是 Ubuntu 13.10...
View Article小技巧 - 運用 Form target 模擬 AJAX 表單傳送效果
先定義我所謂的「AJAX 表單傳送」:意指撰寫 JavaScript 蒐集 HTML 表單欄位,再藉由 XHR 傳送到伺服器端,取代傳統的 Postback。其優點包含送單時畫面不閃動、沒有重新載入網頁的延遲以及傳輸運算成本、表單處理失敗使用者輸入狀態不變方便修改重送... 等等,近年來 AJAX 表單已成網頁操作設計主流。相較之下,傳統 Postback 方式(指用<form...
View Article程式範例:byte[] 不落地壓縮 ZIP 檔
.NET 4.5 起加入 ZipArchive、ZipFile 等列類別,自此不用額外安裝第三方程式庫就能製作 ZIP 檔。微軟官方文件則有篇範例文章,操作說明:壓縮與解壓縮檔案 - Microsoft Docs,介紹如何使用 System.IO.Compression 的一系列類別壓縮及解壓縮檔案。我遇到一個需求,要將使用者在網站查詢的結果,以一筆資料一個檔案形式匯出,再集結壓縮成單一 ZIP...
View Article