1

vs2012、.net 4.5、mvc4 での作業。私のプロジェクトには、ssl の下にある部分があります。プロジェクトを IIS Express で実行しています。プロジェクトのプロパティで:

>SSL Enabled: True
>SSL Url: https://localhost:44300/
>URL: http://localhost:18000/

プロジェクトは正常に実行されます。F5 キーを押すと、ブラウザーが開き、サイトが表示され>http://localhost:18000/ 、すべての通常の (http) ページが正常に機能します。ただし、たとえば、ssl で保護されているログイン ページへのリンク (コントローラーの [RequireHttps]) にアクセスすると、次の場所に移動しようとします。

>https://localhost/Account/LogOn

これは正しくないため、404 で失敗します。手動で

>https://localhost:44300/Account/LogOn 

ログインページは正常に動作します。問題は、https が必要な場合に正しいアドレスに移動させるにはどうすればよいかということです。

4

1 に答える 1

1

次のような rewrite タグを使用して web.config ファイルを構成します。

<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}"/>
      </match>
    </rule>
  </rules>
</rewrite>

上記のコードは、IIS パネルで簡単に生成できます。

于 2013-04-01T17:20:34.763 に答える