Почему это не загружается в https?

В asp.net mvc 3 у меня есть сайт, который имеет сертификат ssl и прекрасно работает в https. Единственная открытая страница - это страница входа. По какой-то причине он не загружается в https. Вот мой соответствующий код (выложу больше по запросу, если я что-то пропущу).

web.config

<compilation debug="false" targetFramework="4.0">
<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880"  requireSSL="true"/>
</authentication>

global.asax

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
  "Default", // Route name
  "{controller}/{action}/{id}", // URL with parameters
  new { controller = "Account", action = "LogOn", id = UrlParameter.Optional }
 );
}

контроллер аккаунта

#if !DEBUG
    [RequireHttps]
#endif
public class AccountController : Controller
{
 public ActionResult LogOn()
    {
        return View();
    }
}

Когда окно входа в систему загружается, оно не в Https. Что я упустил?

2 ответа

Решение

Вам нужно установить цель сборки на выпуск при создании сайта. Вы увидите раскрывающийся список, который выглядит следующим образом в Visual Studio, измените его на Release и пересоберите, а затем опубликуйте свой сайт:

Вам нужно добавить [RequireHttps]так это будет выглядеть так:

[RequireHttps]
public ActionResult LogOn()
{
    return View();
}

Это заставит его использовать Https,

редактировать

Возможно, вам нужно добавить следующее к вашему Web.Config"s <system.webServer> раздел:

<rewrite>
  <rules>
    <rule name="Secure Account Controller" enabled="true" stopProcessing="true">
      <match url="^account" ignoreCase="true" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        <add input="{HTTPS}" pattern="off" />
        <add input="{HTTP_HOST}" pattern="([^/:]*?):[^/]*?" />
      </conditions>
      <action type="Redirect" url="https://{C:1}:44300{URL}" />
    </rule>
  </rules>
</rewrite>
Другие вопросы по тегам