2015-12-21 70 views
3

我有一個在asp.net中構建的Web應用程序,它在HTTP和HTTPS上運行。使網站僅在HTTPS上運行

我想讓它僅在HTTPS上運行。

任何機構有想法會發生什麼變化

我不知道這個嗎?

回答

1

您可以添加代碼在你的Global.asax.cs文件

protected void Application_BeginRequest() 
{ 
    if (FormsAuthentication.RequireSSL && !Request.IsSecureConnection) 
    { 
    Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://")); 
    } 
} 
+0

我試過這個解決方案,運行良好。但是如果我添加Application_BeginRequest(),我的網頁加載多次。那背後的原因是什麼? –

1

Global.asax.cs只需添加該代碼。考慮本地發展的Request.IsLocal

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext context = HttpContext.Current; 
    if (!context.Request.IsSecureConnection && !context.Request.IsLocal) 
    { 
     Response.Redirect(context.Request.Url.ToString().Replace("http:", "https:")); 
    } 
} 

瞭解更多關於www和不WWW重定向herehere

+0

我試過這個解決方案,運行良好。但是如果我添加Application_BeginRequest(),我的網頁加載多次。那背後的原因是什麼? –

+0

我不明白'我的網頁加載多次'的意思。如果你請求** http **,它將被重定向到** https **,所以2個請求將被髮送到服務器。如果您請求** https **,則不會發生Response.Redirect – dimonser

+0

是的,我知道2個請求將發送到服務器。但是,在這兩次請求之後,再次加載頁面,但沒有輸入'Application_BeginRequest'。我試圖創建一個示例網站,並添加'Application_BeginRequest'多次加載頁面,不明白爲什麼? –

0

做,這是在IIS中最簡單的方法。

在網站下選擇「SSL設置」並勾選'需要SSL'複選框並點擊應用。

這種方法的好處是它更安全(代碼中的錯誤不會允許非SSL請求),並且實現起來更容易,更快速。缺點是對HTTP URL的請求不會自動重定向,但您沒有聲明這是必需的。

如果是需求,也可以使用IIS URL Rewrite模塊實現此功能。

+0

我試着實現URL重寫模塊,但在完成鏈接中提到的所有設置後,網站仍然運行在http上,而不是重定向到https –

+0

@MicrosoftDN在鏈接中?我沒有發佈鏈接。您是否對錯誤的帖子發表評論(和投票)? –