2013-01-01 78 views
1

使用vs2012,.net 4.5,mvc4。我的項目有部分屬於ssl。 我正在IIS Express下運行我的項目。在項目屬性:如何在IIS Express中使用ssl時指定端口?

>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時使事物轉到正確的地址?

回答

1

配置有這樣的重寫標籤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面板容易地生成。

+0

這應該添加到''部分?當我複製/粘貼代碼並運行網站時,我得到一個500.52的URL RewriteModule錯誤(無法識別的元素'條件')。我認爲''不應該嵌套在''標籤內。 – comecme

+0

另一個「問題」是在此之後,如果您單擊登錄頁面上的任何鏈接,則繼續使用「https」。也許這是標準行爲,但我希望僅將https用於帳戶控制器的視圖。 – comecme

+0

是的。把它放在。您也必須通過SSL準備網址內容和控制器操作。 foreach控制器操作需要ssl放置[RequireHttps]語句。 –

相關問題