簡體   English   中英

如何在URL中用HTTP替換HTTPS?

[英]How can I replace HTTPS with HTTP in a URL?

我需要在注冊頁面上使用https,在其他地方使用http。 我在global.asax中編寫了以下代碼:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    var currentUrl = System.Web.HttpContext.Current.Request.Url;
    if (currentUrl.AbsoluteUri.Contains("Registration"))
    {
        if (!currentUrl.Scheme.Equals(Uri.UriSchemeHttps,  StringComparison.CurrentCultureIgnoreCase))
        {
            //build the secure uri 
            var secureUrlBuilder = new UriBuilder(currentUrl);
            secureUrlBuilder.Scheme = Uri.UriSchemeHttps;
            //use the default port.  
            secureUrlBuilder.Port = string.IsNullOrEmpty(ConfigurationManager.AppSettings["HttpsPort"].ToString()) ? 443 : Convert.ToInt32(ConfigurationManager.AppSettings["HttpsPort"].ToString());
            //redirect and end the response. 
            System.Web.HttpContext.Current.Response.Redirect(secureUrlBuilder.Uri.ToString());
        }
    }
}

這對於訪問注冊頁面工作正常,但是當我訪問其他頁面時,該方案不會切換回http。

請在Global.asax頁面中添加以下代碼。

  protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var currentUrl = System.Web.HttpContext.Current.Request.Url;
        if (currentUrl.AbsoluteUri.Contains("Registration"))
        {
            if (!currentUrl.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.CurrentCultureIgnoreCase))
            {
                //build the secure uri 
                var secureUrlBuilder = new UriBuilder(currentUrl);
                secureUrlBuilder.Scheme = Uri.UriSchemeHttps;
                //use the default port.  
                secureUrlBuilder.Port = string.IsNullOrEmpty(ConfigurationManager.AppSettings["HttpsPort"].ToString()) ? 443 : Convert.ToInt32(ConfigurationManager.AppSettings["HttpsPort"].ToString());
                //redirect and end the response. 
                System.Web.HttpContext.Current.Response.Redirect(secureUrlBuilder.Uri.ToString());
            }
        }
        else if(currentUrl.Scheme.Equals(Uri.UriSchemeHttps, StringComparison.CurrentCultureIgnoreCase))
        {
                var secureUrlBuilder = new UriBuilder(currentUrl);
                secureUrlBuilder.Scheme = Uri.UriSchemeHttp;
                secureUrlBuilder.Port = 80;
                System.Web.HttpContext.Current.Response.Redirect(secureUrlBuilder.Uri.ToString());

        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM