2017年6月12日 星期一

[研究] Visual Studio 2017 把 HTTP 自動重導到 HTTPS 後,無法進行除錯執行

[研究] Visual Studio 2017 把 HTTP 自動重導到 HTTPS 後,無法進行除錯執行

2017-06-12

Site.Master.cs 的 Page_Load() 增加
            // 自動重導 HTTP 到 HTTPS,IIS 必須 Port 80 和 443 都啟用

            string https= Request.ServerVariables["HTTPS"].ToString();
            string http_host = Request["HTTP_HOST"].ToString();
            string rawUrl = Request.RawUrl;
            if (Request.ServerVariables["HTTPS"].ToUpper() != "ON")
            {
                Response.Redirect("https://" + Request["HTTP_HOST"] + Request.RawUrl);
            }


Visual Studio 2017 v15.2 在 Site.Master.cs 的 Page_Load() 增加把 HTTP 自動重導到 HTTPS 的程式後,發現在 Site.Master.cs 設定中斷點,在 Visual Studio 2017 下執行,會出現錯誤

開啟 [進階] 設定中的 TLS 1.0、TLS 1.1 與 TLS 1.2,然後再嘗試重新連線到 https://localhost:1931 。如果持續發生此錯誤,則此網站可能使用不支援的通訊協定。請連絡網站系統管理員。


(下圖) 在上圖中按下「變更設定」按鈕,跳出的畫面顯示 TLS 1.0、1.1、1.2 都有勾選

(下圖) 第一張圖片如果點下 RC4 之後的詳細連結

RC4 編碼器已不再支援在 Internet Explorer 11 或 Microsoft 邊緣
https://support.microsoft.com/zh-tw/help/3151631/rc4-cipher-is-no-longer-supported-in-internet-explorer-11-or-microsoft-edge


********************************************************************************

後來改成寫在 Global.asax.cs 中才可以在 Visual Studio 2017 v15.2 中除錯執行


// 自動重導 HTTP 到 HTTPS,IIS 必須 Port 80 和 443 都啟用
        void Application_BeginRequest(object sender, EventArgs e)
        {
            //取得每一個reuqest網址
            bool needsSSL = true;

            if (needsSSL != Request.IsSecureConnection)
            {
                if (needsSSL)
                {
                    Response.Redirect(Uri.UriSchemeHttps + Uri.SchemeDelimiter + Request.Url.Host + Request.Url.PathAndQuery, true);
                }
                else
                {
                    Response.Redirect(Uri.UriSchemeHttp + Uri.SchemeDelimiter + Request.Url.Host + Request.Url.PathAndQuery, true);
                }
            }
        }

(待續)

沒有留言:

張貼留言