2012-06-27 8 views
1

Наш адрес сайта похож на «http: //members.XXX.XX», поэтому я хочу перенаправить на «https: //members.XXX.XX» независимо от типа пользователя «members.XXX.XX» или «HTTP: //members.XXX.XX», вот мой код, и я положил его в default.aspxПеренаправление http на https в default.aspx

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.IsSecureConnection == false) 
     { 
      Response.Redirect(Request.Url.ToString().Replace("http://", "https://")); 
     } 

     if (!Request.Url.ToString().StartsWith("http://") || !Request.Url.ToString().StartsWith("https://")) 
      Response.Redirect("https://" + Request.Url.ToString()); 

     Response.Redirect("~/pages/login.aspx"); 
    } 

, который не работает, кто может помочь ? Большое спасибо

Редактировать: Мы не делали этого в IIS, потому что мы запустили ELMAH, который является системой регистрации ошибок. Мой коллега сказал, что если мы это сделаем, ELMAH не будет работать

+1

Вы используете IIS7? – Josh

+0

Почему код не работает? –

+0

@WiktorZychla понятия не имею, набрал http: //members.XXX.XX, который не перенаправлял https – pita

ответ

2

Вместо того, чтобы делать это в коде, просто позвольте IIS обрабатывать его для вас.

IIS7
Требовать SSL через IIS и захватить код ошибки 403.4 сделать редирект для вас. Шаг за шагом руководством "IIS7 Redirect HTTP to HTTPS"

IIS6
Вы можете создать сайт редиректа, который работает на порт 80 для обработки вашего редиректа на HTTPS. Узнайте больше об этом "How to Force Redirection From HTTP to HTTPS on IIS 6.0".

+0

Мы попытались, и мой коллега сказал, что сделает ELMAH (система регистрации ошибок) отключенной, поэтому .. – pita

+1

У меня в настоящее время есть настройка ELMAH и есть перенаправление на место. (Я использую базовую конфигурацию с elmah). Я просто просматриваю сайт на 'https: // localhost/elmah.axd', и все работает нормально. –

+0

спасибо, он работает, и elmah работает тоже – pita

1

Вы можете добавить к Global.asax

protected void Application_BeginRequest() 
    { 

     if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection) 
      Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:")); 
    } 
Смежные вопросы