Как настроить сайт для автоматического перенаправления с HTTP на HTTPS в C # - PullRequest
1 голос
/ 05 сентября 2011

Я установил 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);
    }
}

У меня вопрос: как настроить сайт для автоматического перенаправления с HTTP на HTTPS в C #?

Ответы [ 3 ]

2 голосов
/ 05 сентября 2011

Проверьте, перенаправляет ли http на https:

if(!Request.IsSecureConnection) 
{ 
    string redirectUrl = Request.Url.ToString().Replace("http:", "https:"); 
    Response.Redirect(redirectUrl); 
}
0 голосов
/ 07 января 2019

Лично я предпочитаю модуль Url-Rewrite для IIS: https://www.iis.net/downloads/microsoft/url-rewrite

После установки moudle вы можете добавить перенаправление в 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>
0 голосов
/ 05 сентября 2011

В 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...