Darkthread

黑暗執行緒
  • CODE - WebClient 下載檔案自動取得檔名

    透過 WebClient.DownloadFile() 或 DownloadData() 下載檔案對 .NET 老鳥而言是雕蟲小技(參考: CODE-使用C#程式從網站下載檔案 ),但此種寫法檔名需自行指定。若下載對象非靜態檔案,伺服器端程式會透過 Content-Disposition Response Header 傳回檔名供客戶端參考,WebClient 是否能由 Response Header 自動取得檔名呢? 答案是可以! 程式範例如下: static string DownloadFile...
  • ASP.NET Core View 中文變 & # x4E2D; & # x6587;

    發現 ASP.NET Core 有個特性造成困擾。 我們都知道在 cshtml 以 @textFromServerSide 嵌入字串時,預設會被 HtmlEncode 以防止 Cross-Site Scripting 攻擊,如要將字串視為 HTML 標籤處理需額外呼叫 Html.Raw()。但在 ASP.NET Core 裡,結果跟我原本想像不同,例如以下 cshtml,表面上看來正常,中文正常顯示: @{ Layout = null; } <html> <body> <div>...
  • UrlEncode() 與空白變加號問題

    在 ASP.NET Core 遇到轉換網址中文及特殊字元的需求,由於 .NET Core 不適合再用 System.Web.HttpUtility,爬文 查到 有個替代品 - System.Net.WebUtility.UrlEncode,開開心心上路卻踢到鐵板。 問題出在 System.Net.WebUtility.UrlEncode() 會將空白字元轉成加號,而 IIS7+ 預設禁止在網址使用加號,否則必須修改 allowDoubleEscaping 設定,但如此將增加風險。(延伸參考: IIS...
  • 2018 苗栗山城星光馬

    六七八月休了三個月避暑,2018 下半年第一場由苗栗山城星光馬掀開序幕。 會場設在苗栗縣立體育場,下午四點半起跑,氣溫是嚇人的 35 度。 主持人報告本屆全馬大約有八百多人(這種天氣下場,堪稱八百壯士,對於跑步肯定是真愛),比賽也算小而美。 起跑時,起跑拱門正前方有一大片烏雲,可惜老沒飄到賽道這一帶,透過薄雲的陽光仍帶有殺氣,熱呀~ 大會封了整條單向車道,寬敞好跑又不必與車爭道,缺點是風景單調了點,全馬同樣路線得跑兩趟,枯燥度加倍。水站補給中規中矩,水、運動飲料、汽水、小糕點、檸檬片、西瓜、香蕉...
  • 【茶包射手日記】web.config 設定鬼故事

    同事報案,某網站委託 OP 上線出現異常,連至本機查看詳細錯誤訊息,ASP.NET 回報看不懂 </location> 元素。 上圖的 <location path="Area51">...</location> 是本次新增設定,是應用先前介紹過的 Windows 驗證網站設定部分匿名存取 技巧,用 <location> 針對部分路徑做不同設定的做法過去用得很多,不該有錯,更何況同一 web.config 的前一段就活生生是另一個...
  • 程式範例 - 正式台測試台 JSON + Dapper 資料搬移術

    野人獻曝,分享最近在寫的正式、測試台間的小規模資料搬移法。 情境是正式台跟測試台各有自己的資料庫,想將正式台某幾筆資料匯出,備份保存或是匯入測試台資料庫模擬測試;或是反過來,資料先在測試台輸入驗證無誤後要上線,希望將將輸入好的資料直接匯入正式台,省去在正式台重新登打的工夫。 這類情境用 Entity Framework 不難實現的,這篇介紹則介紹不用 EF 的做法。匯出匯入的前題是要有強型別的 Entity 型別,你可以手工宣告,也可借用 Visual Studio 強大的「貼上 JSON 做為類別...
  • 【茶包射手日記】SQLite 資料庫出錯消失

    最近啟動了部落格轉移計劃,打算把我的部落格從 ASP.NET + SQL 移到 ASP.NET Core + SQLite。前陣子試出 Ubuntu + SQLite + Dapper 令我信心大增,後續進展也挺順利,寫了匯入程式,從 SQL 匯出物件轉 JSON,開始將 JSON 資料轉換成新平台 Model,再用 Entity Framework 寫入 SQLite 資料庫。 不料,批次匯入時發現每次一轉到某篇文章時固定出錯,最可怕的是,出錯後整個資料庫檔案會消失無蹤。 頓如五雷轟頂!喵的,這還得了...
  • 在 ASP.NET MVC Response.End() 不會中斷執行

    同事回報了一起奇怪狀況,追查之後又學到新東西。在我的觀念裡,Response.End() 時會立即中斷執行,有時還會觸發討厭的 ThreadAbortException 。但在以下的 ASP.NET MVC 範例中,CheckAuth() 在查不到 Cookie 時會導向 /Login 並呼叫 Response.End() 結束執行,結果沒有,程式繼續往下跑,在試圖修改 Response.ContentType 時觸發 HTTP Header 送出後無法修改 ContentType 的錯誤:(修改...
  • 突破 32 位元 .NET 程式 2GB 記憶體上限

    同事分享了一記讓 32 位元 .NET 程式突破 2GB 記憶體上限的密技,讓我不禁獻上了膝蓋,當然要轉分享一下。 .NET 編譯成 32 位元與 64 位元最大的差異在於可用記憶體上限,32 位元的記憶體定址上限為 4GB,其中 2GB 配置給作業系統核心模式,應用程式為使用者模式只有 2GB 可用,實際執行需再扣除 Runtime 本身耗用的記憶體,依經驗只能用到 1.6GB 左右。所以若無特殊限制,程式最好編譯成 AnyCPU 或 x64 以充分享用記憶體。但實務上 .NET 程式一旦引用了...
  • 程式範例 - 使用 C# 寄送圖文並茂郵件

    在 Outlook 寫信時,直接在文字穿插圖片是再自然也不過的事(如下圖),但是用 C# 程式走 SMTP 寄信,夾帶附檔的經驗很多,直接在內文內嵌圖檔倒是沒試過。 很快在 Stackoverflow 查到 範例 ,照方煎藥,就寄出像上面圖文並茂的信件了: using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; using System.Net.Mime; using System...
  • ASP.NET Core 值得學嗎?

    連發了幾篇 ASP.NET Core 文章,果不其然接到各方詢問: 「 喵的 媽呀,微軟又推新東西了?」 「WebForm 玩完了嗎?」 「我 ASP.NET MVC 還沒開始玩耶,是不是不用學了?」 先簡單答覆以上疑問: 是的, ASP.NET Core 是下一代的 ASP.NET,能跨平台執行,預期是未來的主流。它是兩年前推出的新東西沒錯,但做資訊這行一天到晚學新東西剛好而已好嗎?你要是體驗過前端框架「 放煙火式的生命週期 」,這根本不算什麼。 至於 WebForm,再戰十年或二十年應該不是問題...
  • 前端小筆記-Progressive Web App (PWA)

    抓了開源專案 MiniBlog.Core 回來玩,想在其中套用 Form target 模擬 AJAX 表單傳送 技巧時踢到鐵板,開啟 F12 偵錯工具後驚呼:天吶,這世界又變了! 新時代的 Postback 不再是單純送出一個 Request 拿回 HTTP 200,而是像這樣子: 如上圖,表單送出行為被拆成三個動作,並出現關鍵字 ServiceWorker。 另外,我發現 js、css 也變成由 ServiceWorker 載入。 爬文得知原來是專案引用了 WebEssentials.AspNetCore...
  • 程式範例:byte[] 不落地壓縮 ZIP 檔

    .NET 4.5 起加入 ZipArchive、ZipFile 等列類別,自此不用額外安裝第三方程式庫就能製作 ZIP 檔。微軟官方文件則有篇範例文章, 操作說明:壓縮與解壓縮檔案 - Microsoft Docs ,介紹如何使用 System.IO.Compression 的一系列類別壓縮及解壓縮檔案。 我遇到一個需求,要將使用者在網站查詢的結果,以一筆資料一個檔案形式匯出,再集結壓縮成單一 ZIP 檔方便使用者下載。爬文找到的範例多以檔案形式處理為主,而我想省掉將資料寫成檔案再壓縮的步驟,但直接將記憶體...
  • 小技巧 - 運用 Form target 模擬 AJAX 表單傳送效果

    先定義我所謂的「AJAX 表單傳送」:意指撰寫 JavaScript 蒐集 HTML 表單欄位,再藉由 XHR 傳送到伺服器端,取代傳統的 Postback。其優點包含送單時畫面不閃動、沒有重新載入網頁的延遲以及傳輸運算成本、表單處理失敗使用者輸入狀態不變方便修改重送... 等等,近年來 AJAX 表單已成網頁操作設計主流。相較之下,傳統 Postback 方式(指用<form action="…">配合<input type="submit">或<button>按鈕送單的做法...
  • ASP.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 之後 xrdp 不再支援系統預設的 Gnome 和 Unity 桌面,大部分使用者只好改用精緻度與功能較差的...
更多文章 下一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems