From: 011netservice@gmail.com
Date: 2023-04-17
Subject: readme-iis.txt
章節:
#### 2023-04-17, 設定網站編碼格式.
#### 2023-01-02, 網站匯入憑證 和 繫結
#### 2022-06-21, 設定 IIS 網站瀏覽 http 時自動轉成為 https.
#### 2019-11-11, IIS7 版本以上的應用程式集區, 預設不啟動支援32位元, 導致部屬網站後, 卻無法執行瀏覽網頁.
https://svc.011.idv.tw/CodeHelper/Windows/IIS/readme-iis.txt
歡迎來信交流, 訂購軟體需求.
#### 2023-04-17, 設定網站編碼格式.
□ 開啟 IIS後, 若要全部網站, 則選擇主機, 否則選擇站台.
□ 開啟 .NET 全球化, 將文化特性中的 回應、回應標頭、要求、和檔案, 都改成需要的編碼格式, 例如: UTF-8.
□ 按套用以後, 會將設定值存入 web.config 中. 所以直接修改 web.config 也可以!
□ web.config
web.config 範例如下:
#### 2023-01-02, 網站匯入憑證 和 繫結
□ 匯入憑證
將 (.pfx檔案) 匯入本機電腦.個人.憑證
有2個方法可以將憑證匯入 iis 中, 請使用第1個方法, 不要使用容易出錯的第2個方法.
○ 方法1:
以系統管理員執行 certlm 匯入伺服器憑證(.pfx檔案), 不要用 IIS 管理員中匯入:
選擇 憑證-本機電腦.個人.憑證, 滑鼠右鍵選單所有工作.匯入.存放位置本機電腦.
下一步.選擇(.pfx檔案).輸入密碼.注意要勾選 將這個金鑰設成可匯出。這樣您可以在以後備份或傳輸你的金鑰.
下一步.憑證存放區選擇個人.完成
執行成功後, 可看到例如 Let's encrypt 的三張憑證 存放在 (本機電腦.個人.憑證)中:
1. ISRG Root X1 (全部)
2. R3 (伺服器驗證, 用戶端驗證)
3. *.011.idv.tw (伺服器驗證, 用戶端驗證)
這個步驟等於在 IIS 管理員中匯入伺服器憑證.
以上步驟完成後, 就可以在 IIS 管理員.伺服器憑證中看到 *.011.idv.tw (伺服器憑證).
這個步驟等於(IIS 管理員.伺服器憑證)匯入憑證.
○ 方法2:
若要從 IIS 管理員中匯入伺服器憑證, 步驟如下: (這個方式容易出錯, 不建議使用)
IIS伺服器匯入憑證.IIS.主機名稱.伺服器憑證.匯入.選擇.pfx憑證檔案.輸入密碼.選取憑證儲存區=個人.
注意不要勾選允許匯出此憑證(預設是勾選, 但是別勾選!)
建議不要使用本步驟的方式匯入伺服器憑證, 而是以步驟1的方式, 匯入伺服器憑證.
因為 IIS 管理員.伺服器憑證匯入的過程中, 有一個(預設為勾選允許會出此憑證)的選項,
測試結果是不能勾選, 否則會導致後續繫結憑證時, 錯誤到令人崩潰不知道錯在哪裡?
□ 網站繫結憑證
IIS.選擇需要繫結的網站.編輯繫結.新增.類型=https.填入連接埠(一般是443).SSL憑證=選擇已匯入的憑證.關閉.
若有問題的話, 請看前面提醒應該使用的方法, 令人崩潰的錯誤在哪裡?
□ 測試啟用憑證
瀏覽器開啟測試網址
若繫結連接埠, 類型http為80, 類型https為443, 則測試網址為
例如:
http://www.011.idv.tw
https://www.011.idv.tw
否則測試網址為
例如:
http://www.011.idv.tw:(連接埠)
https://www.011.idv.tw:(連接埠)
若測試成功的話, 類型 https 應可正常顯示安全鎖頭, 不會出現類型 http 的不安全驚嘆號, 並且可以同時使用 http, https 瀏覽網站.
若有問題的話, 請看前面提醒應該使用的方法, 令人崩潰的錯誤在哪裡?
若要讓 http 瀏覽自動轉成 https, 則請參考(設定 IIS 網站瀏覽 http 時自動轉成為 https).
□ tocheck: 這樣是匯入到哪 ????
Windows
請以「系統管理員身分」執行以下命令,即可將憑證匯入到 Windows 的憑證儲存區之中:
certutil -addstore -f "ROOT" server.crt
#### 2022-06-21, 設定 IIS 網站瀏覽 http 時自動轉成為 https.
□ 方法1: 會自動將http 路徑對應成 https 路徑.
建議使用方法2.
適用於原本為 http 舊網站, 啟用為新的 https 網站.
設定 web.config 如下:
本方法筆者未測試過, 因為方法1就夠用了!
以下為參考資料:
先安裝 url-rewrite:
https://www.iis.net/downloads/microsoft/url-rewrite
注意要選對版本: 中英文、x86, x64...
IIS 和 ASP.NET Core 將網站強制導向HTTPS並且使用HTTP狀態碼為301
https://talllkai.coderbridge.io/2021/05/03/HTTPS301/?utm_source=coderbridge-com&utm_medium=indie_related_post_title&utm_campaign=openCV%20%E4%BB%8B%E7%B4%B9%E8%88%87%E5%B0%8E%E5%85%A5%E5%AF%A6%E4%BD%9C_IIS%20%E5%92%8C%20ASP.NET%20Core%20%E5%B0%87%E7%B6%B2%E7%AB%99%E5%BC%B7%E5%88%B6%E5%B0%8E%E5%90%91HTTPS%E4%B8%A6%E4%B8%94%E4%BD%BF%E7%94%A8HTTP%E7%8B%80%E6%85%8B%E7%A2%BC%E7%82%BA301_@talllyes
□ 方法2: 將 http 重新導向 https 首頁.
建議使用方法2.
設定 IIS(功能同設定 web.config)
1. IIS.選擇網站站台.SSL設定.勾選需要SSL.套用.
2. IIS.選擇網站站台.錯誤網頁.新增 403.4 錯誤訊息網頁.回應動作=(回應302重新導向), 並且輸入https:版的首頁(例如: https://www.011.idv.tw/)
或是設定 web.config 如下:
注意因上版新程式後, 會覆蓋掉 web.config.
因此重新上版程式後, 須注意 web.config 檔案中之 .403.4 設定須維持正確
#### 2019-11-11, IIS7 版本以上的應用程式集區, 預設不啟動支援32位元, 導致部屬網站後, 卻無法執行瀏覽網頁.
例外狀況詳細資訊: System.BadImageFormatException: 無法載入檔案或組件 'WebForm1' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
ref:
https://dotblogs.com.tw/jshsshwa/2013/07/23/112092
Windows 10 的 iis 版本為 Internet Information Service (Version 10.0.18362.1)
IIS7 版本以上的應用程式集區, 預設不啟動支援32位元, 導致部屬網站後, 卻無法執行瀏覽網頁, 錯誤訊息為: 例外狀況詳細資訊: System.BadImageFormatException: 無法載入檔案或組件 'WebForm1' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
若無法將現有dll 編譯為 64位元版本, 則可開啟 (IIS 啟用 32 位元應用程式) 解決.
開啟方式:
IIS.應用程式集區.[你的網站].進階設定.啟用32位元應用程式.