顯示具有 IIS 標籤的文章。 顯示所有文章
顯示具有 IIS 標籤的文章。 顯示所有文章

以iisreset.exe與appcmd.exe管理Windows IIS Container

以 iisreset.exe 與 appcmd.exe 管理 Windows IIS Container

當我們採用含 IIS 功能的 Windows Container 後(例如,Windows IISASP.NET等),有時需要查詢或操作 IIS,未經組態的 IIS 容器並無法直接使用如 IIS 管理員等 GUI 工具來連線管理。還是可以透過內建 iisreset.exe 與 appcmd.exe 來進行查詢與管理。

POST GZIP/Deflate Data to ASP.NET Web API

POST GZIP/Deflate Data to ASP.NET Web API

前一篇使用GZIP或DEFLATE壓縮,提升資料傳遞效能40倍,我們處理了查詢資料量大時,Web API 在傳遞未經壓縮的資料產生許多不必要的網路流量的問題。現在我們轉換方向,如果是用戶端要傳遞大量資料至 Web API 時,那麼我們要怎麼處理?這比較麻煩,有二個方向要討論,一是 Client 端進行發送請求時,必須先做 GZIP/Deflate 的壓縮,而 Web API 接收到 GZIP/Deflate 壓縮資料後需要解壓縮還原資料內容。

從這個方向來思考,你應該能發現另一件事,就是前一篇我們只專注在 GZIP/Deflate 的壓縮上,並無做任何解壓縮的工作,那是因為瀏覽器本身在協商過程與接收到的 Header 可以判定接收到的是 GZIP/Deflate 的內容,瀏覽器會直接幫我們進行 GZIP/Deflate 的解壓縮工作。

ASP.NET Web API:使用GZIP或Deflate壓縮,提升資料傳遞效能40倍

ASP.NET Web API使用GZIP或Deflate壓縮,提升資料傳遞效能40倍

未壓縮資料量

專案有個查詢資料量不小,基本測試資料每次約1.92 MB,透過 ASP.NET Web API 傳遞至 Client 端每次就是 1.92 MB 的網路傳遞量,而且未來上線後,資料量只會越來越大,直覺感到不對勁(壞味道)。

IIS的動態壓縮靜態壓縮對 ASP.NET Web API 是無效的。而且,平常 ASP.NET Web API 的請求,資料負載量也不是很大,那種 KB 級的資料壓縮率不高,平常也就沒特別注意。不過在 MB 級的資料,有無啟用 GZIP 或 Deflate 壓縮的資料量差異,直接說結果,以我實測得到的數據差了40倍

線上網站很慢!使用DebugDiagnostic Tool進行線上IIS網站程式效能分析

線上網站很慢!使用DebugDiagnostic Tool進行線上IIS網站程式效能分析

我們有個專案的架構如下:

JS Framework <--> ASP.NET MVC <--> ASP.NET Web API(Service) <--> UDSP <--> ASP.NET Web API(Authorzation)

專案網站有個怪問題,如果網站2到3小時的時間無人使用,那麼閒置時間後第一個第一次使用的人會特別慢。針對IIS的Application Pool的啟動模式由OnDemand改為AlwaysRunning,針對IIS站台的預先載入也已經修改為true,但效果有限。相關停頓、反應時間過長等情境在本地端(Local)模擬不出來,由於分層(tier)過多追起來費時費工。

有無什麼好辦法,可以針對發行至IIS的站台進行線上的偵錯?有的,目前我知道的有三種方法:

  1. WinDBG
  2. IntelliTrace Collector
  3. DebugDiagnostic Tool

WinDBG功能強大,但指令參數複雜,而且取得Dump檔的過程不是那麼友善。針對這樣的問題,WinDBG近期有推出一支Microsoft Store App - WinDBG Preview,可以透過GUI來查詢分析Dump檔案。IntelliTrace Collector也是強大,但推廣不易,因為IntelliTrace定位在Visual Studio企業版才能使用。DebugDiagnostic Tool是本篇的主角,選擇它的原因很簡單,第一、它安裝與使用容易。第二、它收集Dump容易。第三、它分析Dump容易。

首先,你必須先下載Debug Diagnostic Tool v2 Update 2並安裝至IIS所在的伺服器上。安裝好會多三套工具,DebugDiag 2 Collection、DebugDiag 2 Analysis、DebugDiag 2 RuleBuilder(beta)。

如何在 Windows(非IIS) 製作 SHA2(SHA256) 的 .csr 憑證簽章檔案

如何在 Windows(非IIS) 製作 SHA2(SHA256) 的 .csr 憑證簽章檔案

今天在申請 SSL 憑證被單位告知,使用 IIS 產出的 CSR 採用的 SHA1 演算法已被破解(就找到的新聞來看,是被認為不安全,各大公司有計畫性的淘汰 SHA1,例如:SSL 和程式碼簽章憑證的 SHA-1 雜湊演算法移轉 - 以 SHA-2 憑證取代 SHA-1 憑證HTTPS網站被Chrome打臉?),需改用 SHA2(SHA256) 重新製作,但找了半天也沒找到 IIS 在建立憑證簽章請求的 GUI 中可以選擇 SHA2 演算法,後來才知道,使用 IIS GUI 來產生的 .csr 憑證檔案預設都是使用 SHA1 演算法。那麼怎麼辦呢?

還好小弟自己每年要為 kkbruce.tw 申請與安裝 SSL,剛好略懂 SSL 的申請與安裝,不然如果直覺下關鍵字「iis sha2 csr」(我還是有下啦),那些方法看完頭都昏了。

為什麼用 Microsoft Edge / Internet Explorer 11 就是破破破版?

為什麼用 Microsoft Edge / Internet Explorer 11 就是破破破版?

使用者回報一個剛上內部測試區的網站嚴重破版,但「在開發者電腦正常,在使用者電腦不正常」,唯一差異,開發者是在本機測試,使用者是連上測試區的 IIS 測試。同事快速從 F12 開發者工具發現關鍵字,借此又多瞭解一個 Microsoft Edge / Internet Explorer 預設值與差異。

解決使用Certreq.exe取得SSL憑證發生0x80092004錯誤

解決使用Certreq.exe取得SSL憑證發生0x80092004錯誤

自從G大(谷歌)說,我要提升使用HTTPS網站排名之後,慢慢網站的世界有了改變。啟用HTTPS的網站比例不斷升高。例如,kkbruce.tw就啟用了HTTPS。這裡感謝DigiCert提供免費的SSL憑證。

更新SSL憑證

kkbruce.tw是建置在Microsoft Azure之上,而且現在Microsoft Azure上的文件寫的還不錯,新的一年到來,也到了要更新kkbruce.tw的SSL憑證時間,要更新SSL憑證可以參考針對 Azure App Service 中的 App 啟用 HTTPS的內容。在取得SSL憑證,我採用的是使用 Certreq.exe 取得憑證

  1. 參考產生 kkbruce.csr
  2. 將 kkbruce.csr 上傳(或copy內容) 至 CA 單位。(選擇所使用者網頁伺服器,這裡我選IIS 8)
  3. 下載 *.cer 檔進行匯入作業。
  4. certreq -accept -user www_kkbruce_tw.cer
certreq-0x80092004-error

如圖,我在第四步碰到些問題:

VS2015的IISExpress 10的applicationhost.config置叨位

VS2015的IISExpress 10.0的applicationhost.config置叨位

appcmd list site

代誌是這樣的,比較認識我的人就會知道,我在開發Web Application (MVC、Web API)除非需要下中斷點除錯,不然其實我是比較少按【F5、Ctrl+F5或含瀏覽器名稱的綠色三角型】來啟動IISExpress.exe,那要怎麼啟動呢?我喜歡用指令的方式來啟用IISExpress。VS2015新增新網站應用程式專案後發現,怎麼在apcmd list site怎麼樣就是找不到剛新增的專案?但VS2015又能正確啟動新增好的專案呢!

MVC 4發行至IIS 7.5之後Bundle功能無法運作

MVC 4 - Bundling and Minification

Bundling and Minification 在書中 5.6 小節我翻譯為「合併與最小化」,這是一個對於網站而言非常非常非常實用的功能,它能快速合併你所有設置的所有檔案成為一個檔案(多合一)併進行最小化的工作,重點是完全自動化,不需要再去其他類似JavaScript最小化、CSS最小化的網站,或下載工具利用工具在上線前再自己手動進行類似工作。各位可以參考前端優化的幾篇文章。

IIS 7.5無法運作Bundle功能?

當 Visual Studio 2012 發行 ASP.NET MVC 4 專案至 Windows Server 2008 R2 x64 平台(IIS 7.5)後發現 Bundle 功能無法運作。利用程式碼 BundleTable.EnableOptimizations = True 進行設置依然無效。

在網路上搜尋了一陣子,找不到什麼有關的資料,絕大部分都是討論 Bundle 的設置或 BundleTable.EnableOptimizations 程式不然就是 web.cofnig 裡 debug="true" 這個參數。

然後又花費無數青春,在一陣發瘋似亂搞亂測之後,找到了問題的根源。

發行ASP.NET MVC 4之前遠端Windows Server 2008 R2的環境準備

可被佈署的伺服器環境

ASP.NET MVC 的書籍在教發行時,通常都是以本機為實作環境,本機通常會安裝 Visual Studio 開發工具,在安裝 Visual Studio 開發工具時會一併安裝 Deploy 的工具與環境,所以本機實作比較沒問題。但實作發行至遠端伺服器時,怎麼樣就是不給發行,這是因為除了帳號密碼外,伺服器還需要可被佈署的環境。有了可被佈署的環境,我們就能如書中所教的一樣,將MVC專案順利發行至遠端伺服器。

Windows Server 2008 R2佈署環境準備

以下 Windows Server 2008 R2 為實作平台。

要確認是否具備佈署環境依以下清單檢查:

Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看

來自TechEd North America 2013的第一手消息

以下資訊均來自 Channel9 目前於北美 TechEd 活動影片,主要記錄 DEV-B314 這一場 Microsoft ASP.NET, Web, and Cloud Tools Preview 的筆記。

Visual Studio 2013 Preview改良部分

以下將 Visual Studio 2013 Preview 相關內容整理如下:

單一對話視窗

Visual Studio 2013 Preview簡化一開始的新增專案的對話視窗,只區兩大類,進入後也只區分為Empty、Web Forms、MVC、Web API、SPA、Facebook、Mobile。

Web Application dialog

測試伺服器

測試伺服器不在局限於IIS Express,也可以設置為外部伺服器。

ASP.NET 測試伺服器設置

Browser Link

當我們修改頁面文字、Layout、CSS等,可快速重整所有已連接至Visual Studio測試頁面的瀏覽器。

快速重整已連接至Visual Studio測試頁面的瀏覽器

認證組態

在新增專案時即可設置認證組態,目前可結合其他外部Microsoft Live Id、Facebook、Google+、twitter等。

認證組態1

認證組態2

twMVC#8 - ASP.NET Web API課後補充資料與專案範例檔

感謝twMVC的邀請

twMVC 第八場 ASP.NET Web API 課程,講師與工作人員合照

首先,感謝twMVC邀請,讓我有機會和大家分享ASP.NET Web API此一主題,課程中有提到一些注意事項,有些內容在《ASP.NET MVC 4網站開發美學》沒交代清楚,整理成以下文章,以補充書中內容。

邊做邊學IIS 7.5系列影片學習心得筆記

我是當選 Microsoft Most Valuable Professional (MVP, 微軟最有價值專家) 之後才知道有區分為 IT Pro 與 Developer,我競選的是 ASP.NET/IIS 分類( Developer ),事後才知道,此ASP.NET/IIS 分類競爭激烈,但這裡我有個問題,IIS 本身應該算 IT Pro 還是 Developer 管理呢?

Developer 寫完 Code,然後佈署至 IIS。ASP.NET Code / ASP.NET MVC Code 必須運作在 IIS 之下,這沒有問題。但 Developer 是否需要去了解 IIS 的運作及設定?還是另有 IT Pro 的人去進行管理?(見Plurk討論)

以上問題,見人見知,或是見公司見知。像我就是校長兼打鐘,我個人的見解是,Developer 雖然不用去非常了解整個 IIS 運作設定,但對於 IIS 還是要有基礎,有時問題不在 Code 上面,但 Developer 只會往 Code 上去找問題,到是常見的情況。

以下為看完「邊做邊學IIS 7.5系列」 心得筆記。

講師:王寧疆 老師
投影片下載:IIS 7.5 系列教學

IIS 7.5 系列教學影片(1) 筆記

了解為什麼要改使用 IIS 7.5,IIS 7.5 與 IIS 6 的差異。反正改用 IIS 7.5 就對了,就算在不支援 IIS 7.5 的環境,也可以改使用 IIS 7.5 Express 來測試,例如,在 Visual Studio 2008 / Visual Studio 2010 原本的【ASP.NET 程式開發伺服器】是 IIS 6.0 架構,就應該改使用 IIS 7.5 Express 來執行及測試。

IIS 7.5 系列教學影片(2) 筆記

此篇,你可以學習到以下主題:
  • appcmd
    讓我們可以透過下指令方式來管理 IIS。
    在【命令提示字元】(需系統管理員帳戶)請進入 cd %windir%\system32\inetsrv ,輸入 【appcmd.exe】及相關參數即可。
  • URL Rewrite
    讓我們可以改寫網址規則,例如,原始為 Order.aspx?CusId=ADSF,改寫為 Order/CusId/ADSF。
  • IIS 7.5 Express 介紹
  • 預設文件
    了解如何設定預設文件。
  • 功能委派
    讓我們的伺服器管理員,可以開放或關閉特定功能給網站或其他人。
    設定有三種:
    【未委派】:等於不能讀取/寫入。
    【讀取】:只能讀取。
    【讀取/寫入】:可讀取與寫入。除此項之外,未委派與讀取如有寫入動作,都會產生錯誤。
  • Web Deploy
    可使用【IIS 匯出/匯入】與【MsDeploy.exe】,
    【MsDeploy.exe】 目前我電腦中已經有V3:
    V2 Path:C:\Program Files\IIS\Microsoft Web Deploy
    V3 Path: C:\Program Files\IIS\Microsoft Web Deploy V3

IIS 7.5 系列教學影片(3) 筆記

這一篇我們習學到如何利用 IIS 來做活動分析。這部分的內容,我覺得 Developer 應該要去好好了解,例如,使用者反應網站變慢,怎麼查?查程式?開 Visual Studio 查嗎?查資料庫?開 SSMS 查詢嗎?我們應該學習更有效的方法來處理,而且是可以提出數據的處理。這篇給了我們一個很好的方向。
IIS Log 可以透過 Log Parse 或 Log parser Lizard 來幫忙分析。

IIS 7.5 系列教學影片(4) 筆記

第四部談 IIS 與安全設定。我們在撰寫程式時,都會進行許多安全方面的工作,從最前的表單驗證、SQL Injection、XSS…各式各樣的防護工作,但怎麼不會去想如何在【第一關】去進行防護,即一個 Request 一進來第一關一定先碰到 IIS,有了 IIS 確認 Request 之後確認之後,才有後續的動作。

這有點像 Firewall (防火牆) 的工作內容,可以把 IIS 當成進行我們程式前的 Firewall,讓我們的程式可以在更安全的環境下運作。
  • 要求篩選
    【副檔名】:以副檔名進行篩選,什麼可執行,什麼不可執行。
    【規則】:進行Scan URL及Query String來進行規則設定。
    【隱藏區段】:什麼檔案或目錄是不可見的,例如,web.config。
    【URL】:進行URL的 Allow / Deny 的設定。
    【HTTP 指令動詞】:進行 HTTP 指令動詞的 Allow / Deny 設定。
    【標頭】:可新增標頭及大小設定。
    查詢字串】:設定 Allow / Deny 的 Query String 裡的字串,例如,影片中提到的「..」或SQL Injection常用「'」。

    最後一個【查詢字串】我認為是很棒的內容,我們可以整理出透過Query String來攻擊的字串資料,然後加入此【查詢字串】裡的 Deny 清單內,這樣可以預防或減低程式上的不完美,例如,一些 Novice Programmer 就是喜歡用「接字串」來組SQL,所帶來的攻擊風險。
  • IP 位址及網域限制
    只有要【資料庫】的網站,應該都有一個管理後台,此管理後台就非常合適在此處進行設定,只限定特定 IP 位址或網域來存取。當然,私有不對外公開的網站,也適合在此處進行設定。
  • Dynamic IP  Restriction
    此擴充可防止被 DoS 或暴力攻擊。透過限制單一 IP 【最大同時連線數】與【一段時間內的最大連線次數】來預防被攻擊。

IIS 7.5 系列教學影片(5) 筆記

這部分討效能,我們要如何增加網站的執行效能。

另外,此篇也討論如何找出瓶頸,以下面兩個方向來找:
  1. 找出前 N 筆速度最慢的網頁
  2. 找出前 N 筆最常被讀取的網頁
找出後,列為最優先處理的項目,應該就可以提升不少效能。

IIS 7.5 學習心得

看完此教學後,自己有點汗顏,原來 IIS 7.5 有那麼多功能,重點是【實用】。有空的人可以再往下去深入研究,文章中我都有幫各位找好相關連結。我自己看完後,我非常建議當成所有 Developer 基礎教材,PowerPoint 可以免費下載,教學上只需要花些時間看看及開打 IIS 及 Web PI (安裝必須組件或設定) 玩玩即可。