[mvc 4] краткий ответ:
protected void Application_BeginRequest(Object source, EventArgs e)
{
if (!Context.Request.IsSecureConnection)
{
Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"));
}
}
более длинный ответ:
для перехода с http на https вы не можете отправить перенаправление на https после первого пакета,
для этого вам нужно перехватить пакет, используя Application_BeginRequest,
из Global.asax добавьте функцию и она заменит значение по умолчанию,
код должен быть примерно таким (Global.asax на уровне класса):
protected void Application_BeginRequest(Object source, EventArgs e)
{
if (!Context.Request.IsSecureConnection &&
!Request.Url.Host.Contains("localhost") &&
Request.Url.AbsolutePath.Contains("SGAccount/Login"))
{
Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://"));
}
}
Я настоятельно рекомендую устанавливать точки останова и проверять объект Request.Url на предмет необходимости, связанной с URL.
или посетите страницу msdn , озадаченную запросом.url absoluteuri vs originalstring?
так что я могу пойти к dotnetperls для примеров.
эта функция позволяет вам разрабатывать на локальном хосте и развертывать ваш код как есть.
теперь для каждой страницы, которую вы хотите сделать перенаправлением https, вам нужно указать это в условии if.
для перехода с https на http вы можете использовать обычную Response.Redirect, например:
if (Request.Url.Scheme.Contains("https"))
{
Response.Redirect(string.Format("http://{0}", Request.Url.Authority), true);
}
обратите внимание, это также поддерживает работу с тем же кодом при разработке на локальном хосте, не прерывая первоначальный ход вещей до добавления https.
также я рекомендую подумать о реализации некоторого соглашения об обратном URL (если оно еще не реализовано), в этом случае вы должны сделать что-то вроде этого:
if (Request.Url.Scheme.Contains("https"))
{
Response.Redirect(string.Format("http://{0}{1}", Request.Url.Authority, returnUrl), true);
}
это перенаправит на запрошенную страницу после входа в систему.
естественно, вы должны защищать каждую страницу, на которой отображаются пользовательские данные, регистрация, логин и многое другое.