如何配置站点以在C#中自动从HTTP重定向到HTTPS

时间:2011-09-05 11:45:29

标签: c# redirect https

我在一个月前为我的网站设置了SSL。但是,我从来没有习惯过这个网站。 这些是我的问题:

  • 我手动输入为https的URL,因此自动重定向无法正常工作。
  • SSL在https://www.mywebsite.com/a.htm一直没有问题,但是它不能用于那些链接,例如default.aspx,login.aspx。
  • 如果我在某些页面上手动输入https,它会自动从https重定向到http。

代码:

protected void Page_Load(object sender, EventArgs e)
{

    Response.Clear();
    Response.Buffer = true;
    //  Response.ContentEncoding = System.Text.Encoding.Default;
    Response.ContentType = "text/html; charset=windows-1254";

    if (Request.Url.Scheme == "https")
    {
        string URL = Request.Url.ToString();
        URL = URL.Replace("https://", "http://");
        Response.Redirect(URL);
    }
}

我的问题是:如何将网站配置为在C#中自动从HTTP重定向到HTTPS?

3 个答案:

答案 0 :(得分:2)

检查http是否重定向到https

if(!Request.IsSecureConnection) 
{ 
    string redirectUrl = Request.Url.ToString().Replace("http:", "https:"); 
    Response.Redirect(redirectUrl); 
}

答案 1 :(得分:0)

Application_BeginRequest页面的Global.asax方法中,检查请求是否为http。如果是,请将http替换为https

if (!HttpContext.Current.Request.IsSecureConnection)
{
    string redirectUrl = HttpContext.Current.Request.Url.ToString().Replace("http:", "https:");
    HttpContext.Current.Response.Redirect(redirectUrl);
}

答案 2 :(得分:0)

我个人更喜欢IIS的Url-Rewrite模块: https://www.iis.net/downloads/microsoft/url-rewrite

安装模块后,您可以在web.config中添加重定向:

<system.webServer>
    <rewrite>
        <rules>
                <clear />
                <rule name="https" patternSyntax="Wildcard" stopProcessing="true">
                    <match url="*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
                </rule>
        </rules>
    </rewrite>
  </system.webServer>