前端小筆記-Progressive Web App (PWA)
抓了開源專案 MiniBlog.Core 回來玩,想在其中套用 Form target 模擬 AJAX 表單傳送技巧時踢到鐵板,開啟 F12 偵錯工具後驚呼:天吶,這世界又變了! 新時代的 Postback 不再是單純送出一個 Request 拿回 HTTP 200,而是像這樣子:如上圖,表單送出行為被拆成三個動作,並出現關鍵字 ServiceWorker。另外,我發現 js、css 也變成由...
View ArticleASP.NET Core 值得學嗎?
連發了幾篇 ASP.NET Core 文章,果不其然接到各方詢問:「喵的媽呀,微軟又推新東西了?」 「WebForm 玩完了嗎?」 「我 ASP.NET MVC 還沒開始玩耶,是不是不用學了?」先簡單答覆以上疑問:是的,ASP.NET Core是下一代的...
View Article程式範例 - 使用 C# 寄送圖文並茂郵件
在 Outlook 寫信時,直接在文字穿插圖片是再自然也不過的事(如下圖),但是用 C# 程式走 SMTP 寄信,夾帶附檔的經驗很多,直接在內文內嵌圖檔倒是沒試過。很快在 Stackoverflow 查到範例,照方煎藥,就寄出像上面圖文並茂的信件了:using System; using System.Collections.Generic; using System.Linq; using...
View Article突破 32 位元 .NET 程式 2GB 記憶體上限
同事分享了一記讓 32 位元 .NET 程式突破 2GB 記憶體上限的密技,讓我不禁獻上了膝蓋,當然要轉分享一下。.NET 編譯成 32 位元與 64 位元最大的差異在於可用記憶體上限,32 位元的記憶體定址上限為 4GB,其中 2GB 配置給作業系統核心模式,應用程式為使用者模式只有 2GB 可用,實際執行需再扣除 Runtime 本身耗用的記憶體,依經驗只能用到 1.6GB...
View Article在 ASP.NET MVC Response.End() 不會中斷執行
同事回報了一起奇怪狀況,追查之後又學到新東西。在我的觀念裡,Response.End() 時會立即中斷執行,有時還會觸發討厭的 ThreadAbortException。但在以下的 ASP.NET MVC 範例中,CheckAuth() 在查不到 Cookie 時會導向 /Login 並呼叫 Response.End() 結束執行,結果沒有,程式繼續往下跑,在試圖修改...
View Article【茶包射手日記】SQLite 資料庫出錯消失
最近啟動了部落格轉移計劃,打算把我的部落格從 ASP.NET + SQL 移到 ASP.NET Core + SQLite。前陣子試出 Ubuntu + SQLite + Dapper令我信心大增,後續進展也挺順利,寫了匯入程式,從 SQL 匯出物件轉 JSON,開始將 JSON 資料轉換成新平台 Model,再用 Entity Framework 寫入 SQLite...
View Article程式範例 - 正式台測試台 JSON + Dapper 資料搬移術
野人獻曝,分享最近在寫的正式、測試台間的小規模資料搬移法。情境是正式台跟測試台各有自己的資料庫,想將正式台某幾筆資料匯出,備份保存或是匯入測試台資料庫模擬測試;或是反過來,資料先在測試台輸入驗證無誤後要上線,希望將將輸入好的資料直接匯入正式台,省去在正式台重新登打的工夫。這類情境用 Entity Framework 不難實現的,這篇介紹則介紹不用 EF 的做法。匯出匯入的前題是要有強型別的...
View Article【茶包射手日記】web.config 設定鬼故事
同事報案,某網站委託 OP 上線出現異常,連至本機查看詳細錯誤訊息,ASP.NET 回報看不懂 </location> 元素。上圖的 <location path="Area51">...</location> 是本次新增設定,是應用先前介紹過的 Windows 驗證網站設定部分匿名存取技巧,用 <location>...
View ArticleUrlEncode() 與空白變加號問題
在 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【茶包射手日記】換帳號執行程式產生多餘空白
同事回報一枚詭異茶包,某上古神獸級的老 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