Почему это не загружается в 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>