2018-02-22

Windows 7 無法安裝 IIS ASP.NET 模組

這個問題發生在公司的 Windows 7 電腦上,一般日常的程式功能開發大多使用 IIS Express,用到 IIS 的機會並不高,但如果要同時開多個 website,IIS 使用的資源量就會比開多個 Visual Studio 降低很多

最近一直想要釐清同事遇到的 CORS 405 錯誤,在反覆測試的過程中竟然把 IIS 搞到無法 host ASP.NET application,身為 ASP.NET 開發人員,卻無法在 IIS 上建立 ASP.NET 站台XD,讓很多測試情境無法進行,嚴重影響工作效率

當然最終手段 - 重灌,可以解決問題,但除非必要實在不好意思麻煩 MIS 同事,幸虧最後找到不用重灌的解決方法,就來看看該如何解決問題吧

2018-02-20

在 Windows 10 上啟用 Linux Bash Shell

主要使用的筆電在某次更新失敗後就再也無法完成更新,一直停留在 Windows 10 舊版本,雖然在備用機上的 Windows 10 仍正常運作不至於錯過了幾個有趣的功能,但近期的 CPU 漏洞更新在每次開機都會重新執行,讓我實際無法在忽視這件事,所以趁著農曆新年的空閒時間重新安裝了 Windows 10,結果發現 Windows 10 上啟用 Bash 的流程有些不同,紀錄一下

2018-02-09

Windows 7 中無法使用 PowerShell 安裝 IIS?!改用 DISM

這次遇到的問題是在公司的 Windows 7 電腦上,雖然 Windows 7 也是優秀的作業系統,但終究是較早期的產品,對於一些新的工具就得自行安裝或是不支援,今天遇到的狀況就是其中一個例子

因為安裝 Windows feature 的 GUI 持續吐出錯誤 無法完成安裝,所以想試試透過 PowerShell 安裝,結果 import module 就失敗

發現網路相關文章不多,自己紀錄一下囉

2018-02-08

IIS 10.0 開啟 ASP.NET 應用程式出現 403.14 錯誤

最近一兩周嘗試找出同事提出的問題背後所隱含的根本原因,同事遇到的狀況已經解決,但遲遲沒有找出自己可以接受的答案實在不夠痛快,經過幾天反覆驗證終於好像看見真相的一道曙光時,竟然在建立全新環境時做最後確認時遇到 403.14 錯誤

這個 403.14 錯誤對於常常在 IIS 上建立 ASP.NET 站台的朋友想必一定不陌生,而這次解決問題的方式與以往經驗不同,藉此紀錄備查

2018-02-05

C# DateTime 轉 JavaScript Date (依使用者偏好區域來顯示時間)

同事負責的頁面會有不同時區的 user 來瀏覽,時間類型的顯示會直接影響 user 的使用者體驗,尤其是各式公告跟有時效性的操作更是需要特別留意

主要的需求就是用 C# 從 DB 取出 DateTime 資料,接著顯示在網頁上,而 DateTime 資料需要依據使用者所在時區來顯示

以下紀錄一下個人想到的做法,再跟同事交流看看可以怎麼改善

2018-02-04

如何設定 IIS 存取 LocalDB (.MDF) 及並解決 Error 50

繼之前筆記 IIS 存取 LocalDB (.MDF) 時出現 Error 52 解決在 IIS 中直接存取 LocalDB (.MDF) 時出現 Error 52 後接著馬上又遇到 Error 50 的狀況,還好這個錯誤之前就遇到,大概知道原因跟處理方式,就來看看該如何解決吧

IIS 存取 LocalDB (.MDF) 時出現 Error 52

資料庫是網頁應用程式儲存資料最常見的方式,存取資料的操作方法也最廣為人知,只是資料庫本身有維護及管理成本,如果目的只是本機開發使用,透過 IIS Express 搭配 LocalDB 就可以滿足大部份情境了,不過一旦需要實際部署至 IIS 上,LocalDB 就不適用了,因為 LocalDB 是 SQL Server Express 的一種特殊執行模式,而 SQL Server Express 本來就不適用在 production 上,加上 LocalDB 也不是設計用來搭配 IIS

剛好最近有個功能想要模擬不同時區的顯示,可是又不想大費周章管理架設 SQL Server,於是就想到透過 LocalDB 來簡單驗證功能正確性,有段時間沒有這麼做了,設定方式有些生疏,順手紀錄一下以備日後又想偷懶XD

2018-02-02

IIS 設定啟用 CORS (Cross-Origin Resource Sharing) - 跨來源資源共用

網站工程師或多或少都曾聽過 CORS (Cross-Origin Resource Sharing) - 跨來源資源共用,甚至遇到相關問題,小弟也不例外,只是以往主要都是調整 ASP.NET MVC 或是 ASP.NET WebAPI 的設定,這次同事遇到的問題則是靜態網頁,而需要調整 IIS 設定,就來看看如何設定 IIS 啟用 CORS 吧

2018-01-30

Enum To List<SelectListItem> 及 Enum To SelectList

無意間看到專案中的一段程式碼,讓我停頓了一下,一時之間好幾個念頭閃過卻不知道該選擇哪個做法來改善

大意是 View 中有個欄位資料型別是一個 enum,預設範本直接透過 @Html.EnumDropDownListFor 進行綁定,但這樣的輸出有個缺點: enum 的預設值也會被輸出,為了避免預設值也被輸出成選項,第一個念頭就是透過自行組裝 select 及 option 相關 html 的做法

只是靜心想想,是不是有其他更好的做法,想到三個做法筆記一下

2018-01-28

DebugDiag 2 Analysis 出現 DacError

繼前篇筆記 WinDBG 出現 SOS does not support the current target architecture ?! 紀錄在使用 WinDBG 偵錯 production issue 時遇到使用 64-bit 工作管理員匯出 32-bit 程式的 dump 而無法順利完成偵錯的狀況

遇到問題當下並沒有其他心思去偵錯 WinDBG 所以立馬改使用黑大在 ASP.NET CPU 飆高問題之傻瓜分析工具-DebugDiag Tools 一文中介紹的 Debug Diagnostic Tool (DebugDiag) 來查問題,但第一次使用 Debug Diagnostic Tool (DebugDiag),加上問題源頭原本就與工具無關,並沒有順利查出問題根源

在使用 Debug Diagnostic Tool (DebugDiag) 過程遇到不常見的錯誤訊息,於是紀錄一下使用經驗

WinDBG 出現 SOS does not support the current target architecture ?!

前幾天 production server 上的出現 CPU high 的 warning,當下立馬想到使用 WinDBG 來追查問題發生原因,只是我使用 WinDBG 的頻率不高,每次在使用前都要再花一些時間查語法,幸虧黑大日前的文章 - WinDBG 應用實例:找出 ASP.NET CPU 100% 原因 列舉幾個常用的 WinDBG 語法,讓使用 WinDBG 時的前置時間縮短不少,可以更有效率地專注在追查問題原因

以往使用 WinDBG 時都還算順利,但這次卻出現 SOS does not support the current target architecture 的狀況,讓追查動作無法繼續下去,所以立馬來紀錄一下這次使用 WinDBG 的經驗

2018-01-22

NLog 設定 Rule 僅包含部份 Logger

log 是系統正式上線後,少數可以用來協助 debug 的資訊,而 debug 的難易度與解決問題的速度也就跟著 log 的品質而有極大的差異。

今天想要紀錄最近專案遇到的一個需求:某些 log 內容很少使用加上資料量又大實際效用不高,但卻是追查 bug 的最後一道不可或缺的防線(像是 EntityFramework 實際產出的 SQL script),而其他 log 則紀錄了整個程式流程的相關資訊,所以打算將 db 的 script log 與其他程式執行資訊分開儲存,避免 db 的大量 log 形成雜訊而拖慢 debug 的速度,就來看看 nlog 可以如何設定吧

2018-01-20

使用 Moment.js 來簡化 JavaScript 的時間處理

專案的前端頁面在 user 要求加速整個流程下,使用了一套 library - Date Range Picker 方便使用者可以在同一個 input 中同時選擇 start date 與 end date 也讓整體操作獲得簡化,整體改善獲得 user 的好評

故事開頭似乎跟筆記的標題沒什麼關係?! 因為使用了 Date Range Picker 來處理需要同時選擇 start date 與 end date 的需求,而為了讓頁面呈現統一也使用 Date Range Picker 來處理單一日期的選擇,在設定單一日期選擇器的過程中發現 Date Range Picker 送出的日期一樣是 start date 與 end date,並且相當貼心的已經處理成 start date 為選擇日期的 00:00:00 而 end date 為選擇日期的 23:59:59 讓後端程式可以少做一些處理 非常方便,需是乎就打算來學習一下 Date Range Picker 是如何處理 js 的時間問題也才發現今天主角 - Moment.js 的強大功能

今天就來簡單地紀錄一下自己常用的 Moment.js 功能吧

2018-01-18

使用 C# 取出 Word (.docx) 中的內嵌 Office 物件

之前筆記 取得 Word(.docx) 中的內嵌檔案 紀錄到如何在 word 中嵌入其他物件,也提到如何簡易地取出內嵌物件

今天則是要紀錄如何使用 C# 將 Word 中的內嵌物件取出

2018-01-17

取得 Word(.docx) 中的內嵌檔案

之前筆記 使用 C# 將 Word 檔(.docx .doc) 轉換為 PDF 曾經分享過如何使用 C# 將 Word 轉成 PDF,同事在實作後 user 反應如果 word 中有其他文件(e.x. pdf、word、excel、zip) 並沒有同步進行轉換,造成資料遺失

不是我刻意想吐糟 user 反應沒有處理 word 中有其他文件的問題(user 永遠是對的XD),但在 user 提出需求前根本就沒有說 word 會內嵌其他文件,根據最小可行產品的原則一定是沒做的呀 哈哈

今天就先紀錄一下不使用程式下的做法