2

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にはありません。私は何を取りこぼしたか?

4

2 に答える 2

1

サイトをビルドするときに、ビルドターゲットをリリースに設定する必要があります。Visual Studioに次のようなドロップダウンが表示されます。これを[リリースして再構築]に変更してから、サイトを公開します。

ここに画像の説明を入力してください

于 2012-08-10T21:51:50.153 に答える
0

を追加する必要があるため[RequireHttps]、次のようになります。

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

これにより、強制的に使用されますHttps

編集

おそらく、あなたWeb.Config<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>
于 2012-08-10T21:27:06.123 に答える