文章編號: 917412 - 上次校閱: 2007年12月3日 - 版次: 1.5

您可能會被重新導向到表單驗證登入頁面,或者當您嘗試執行由使用.NET Framework 2.0 建置的應用程式時,您可能會收到錯誤訊息

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
全部展開 | 全部摺疊

徵狀

當想執行由使用 Microsoft.NET Framework 2.0 建置的應用程式您可能會被重新導向至表單驗證登入頁面]。或者,可能會收到類似下列的錯誤訊息:
伺服器發生錯誤 '/ WebSites1' 應用程式。
--------------------------------------------------------------------------------

物件參考未設定物件的執行個體。

描述: 目前的 Web 要求的執行過程中發生未處理的例外狀況。 請檢閱堆疊追蹤關於該錯誤,以及它發源程式碼中的詳細資訊。

例外狀況詳細資料: System.NullReferenceException: 物件參照未設定至物件的執行個體。
附註您可能會遇到其他工作階段遺失所造成的問題。

下列情況皆成立或當一個,可能就會發生這個問題:
  • 您將從.NET Framework 1.1 的 Web 應用程式移轉到.NET Framework 2.0 時。
  • 使用指令碼為 Java] Applet 或 Microsoft ActiveX 控制項在用戶端若要執行一個要求中的 Web 應用程式。

發生的原因

HttpOnly 屬性可防止任何用戶端指令碼存取工作階段 Cookie,就會發生這個問題。HttpOnly 屬性加入至工作階段 Cookie,在.NET Framework 2.0。

解決方案

如果要解決這個問題,將 HttpOnly 屬性的工作階段 Cookie 的內容設定為 false 值。

附註HttpOnly 屬性設定為 true 的值無法防止惡意使用者直接存取 Cookie,當惡意使用者有存取網路的通道。請考慮使用安全通訊端層 (SSL) 來協助保護不受這。工作站安全性也很重要。惡意使用者可能使用開啟的瀏覽器視窗或包含永續性 Cookie 來存取 Web 網站使用合法使用者的身分識別的電腦。

HttpOnly 屬性設定 為 false 值,請使用下列程式碼取代 Session_Start 方法 Global.asax 檔中。
   void Session_Start(object sender, EventArgs e)
        {
            if (Response.Cookies.Count > 0)
            {
                foreach (string s in Response.Cookies.AllKeys)
                {
                    if (s == System.Web.Security.FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
                    {
                        Response.Cookies[s].HttpOnly = false;
                    }
                }
            }
        }
附註 如果您想要重複使用多個應用程式中的這段程式碼置於此程式碼自訂 HttpModule 類別。

其他相關資訊

如需有關 HttpOnly 屬性的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx (http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx)
如需有關 HttpModule 類別的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/zec9k340(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/zec9k340(vs.71).aspx)
如需有關在.NET Framework 2.0 和 HttpOnly 屬性的重大變更的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/netframework/aa497240.aspx (http://msdn2.microsoft.com/en-us/netframework/aa497240.aspx)
在本文所討論的協力廠商產品是由 Microsoft 以外的公司所製造的。Microsoft 可讓不以暗示或其他方式,效能或可靠性這些產品的保證。

這篇文章中的資訊適用於:
  • Microsoft .NET Framework 2.0
  • Microsoft ASP.NET 2.0
關鍵字:?
kbmt kbprb kbbug kbinfo kbnofix kbtshoot KB917412 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:917412? (http://support.microsoft.com/kb/917412/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。