2009-11-19 61 views
0

什麼時候應該爲ASP.NET頁面生命週期中的安全頁面實施SSL?ASP.NET頁面生命週期 - 在什麼時候執行SSL?

我的意思是我應該在page_load裏面做?或OnInit?或者其他一些功能?

我正在使用以下代碼爲特定頁面實施SSL,但我應該在哪裏放置此代碼?之前我將它放在OnInit函數中,但是這對ASP.NET嚮導並不適用。我需要檢查它是否回發或不是第一次?

if (!HttpContext.Current.Request.IsSecureConnection) { 
       HttpContext.Current.Response.Redirect(SiteNavigation.ResolveAbsoluteUrl(true, HttpContext.Current.Request.Url.PathAndQuery)); 
      } 

回答

-1

如果你打算將用戶重定向,你想要做它在生命週期中儘可能早,因爲花費在生命週期的任何CPU將被浪費。在OnInit中進行重定向。

+0

-1這個問題說他嘗試了OnInit並且效果不好。 – Gonzalo 2009-11-19 01:29:29

+0

它實際上工作正常。棘手的部分是設計師可能會嘗試刪除它,因爲OnInit通常位於自動生成的代碼塊中。只要確保在VS嘗試刪除代碼時將代碼添加回來。這很簡單:) – 2009-11-19 01:33:33

1

另一種選擇是完全在應用程序之外執行此操作,並在IIS 中強制執行SSL(如果整個站點需要SSL連接)。我們通過爲同一個域名創建兩個站點,在IIS6中完成了這項工作。

mysite.com:80有一個HTTP 403重定向到站點的SSL版本。 mysite.com:443具有實施SSL的實際應用程序。

如果整個網站不需要SSL連接,但只有登錄頁面或網站的某些其他孤立部分,而不是Global.asax中的編程方法(由Gonzalo提到)可能是最好的方法因爲這會在頁面生命週期的早期抓住它。