Select the product you need help with
表單驗證的疑難排解文章編號: 910439 - 檢視此文章適用的產品。 ASP.NET 支援語音資料行表單驗證的疑難排解若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
表單的意見反應。另外還有連結至表單底部的 這個資料行。在此頁中歡迎使用 ASP.NET 支援語音資料行!我的名稱是 Jerry Orman。我已經與 Microsoft 超過 5 年,花了大部分的焦點放在與 Web 相關的技術,例如 Microsoft FrontPage 和新的 Microsoft SharePoint 技術我時間。我花了使用 Microsoft ASP.NET 支援工程師為最後一年。這個月中 [支援語音資料行,我將說明如何疑難排解 Microsoft ASP.NET 中的表單驗證。 表單驗證的疑難排解當您在 ASP.NET 應用程式中使用表單驗證時,您可能會發現需要對使用者隨機重新導向至登入網頁時,就會發生的問題做疑難排解。在理想的世界會在以會讓指令碼的方式發生此問題您輕鬆地附加偵錯工具,並擷取問題。在實際執行環境不過,這是很少大小寫。如果要疑難排解類似的隨機問題,您需要記錄,以便您可以縮小根本原因的相關問題的資訊。 在本專欄中我們將簡要說明表單驗證概念。我們會再研究哪些案例會導致使用者被重新導向至登入網頁,以及如何擷取來隔離問題相關的資料。我們也將說明如何實作 IHttpModule 介面來記錄表單驗證資訊。 表單驗證 」 概觀當使用者使用表單驗證來驗證到網站上時,伺服器建立 Cookie。Cookie 的值是加密的表單驗證票證。Cookie 會傳遞到伺服器應用程式對每個要求,並 FormsAuthenticationModule 類別將解密 Cookie 值,並決定是否使用者是有效或不。根據預設 FormsAuthenticationModule Machine.config 檔中加入類別。FormsAuthenticationModule 類別會管理 FormsAuthentication 程序。 下列是從 Machine.config 檔的項目:
http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx
(http://msdn2.microsoft.com/en-us/library/7t6b43z4.aspx)
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication(vs.71).aspx)
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket(vs.71).aspx 如需有關共用表單驗證 Cookie 的詳細資訊,請造訪下列 ASP.NET 網站:
(http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket(vs.71).aspx)
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx
(http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx)
原因使用者可能會被重新導向到登入頁面表單驗證 Cookie 將會遺失案例 1在此案例在使用者登入到網站中。有些時候,用戶端會與伺服器傳送一個要求,並 FormsAuthenticationModule 類別不會接收 Cookie。您可以決定是否使用者要求不包含在 Cookie 藉由啟用記錄在 Microsoft 「 網際網路資訊服務 (IIS) 的 Cookie。如果要執行這項操作,請依照下列步驟執行:
附註您可以使用記錄檔剖析器來剖析 IIS 記錄檔。如果要下載記錄檔剖析器,請造訪下列 Microsoft 網站: http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07 在您從該特定的使用者要求的清單之後,搜尋要求至登入頁面。您知道他們已被重新導向至這個網頁,而您想要重新導向發生前,請參閱該要求。如果您看到類似下列用戶端可能並未傳送 Cookie,或者在用戶端和伺服器之間網路已移除 Cookie。
(http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07)
這是初始登入。 摺疊此表格
摺疊此表格
附註第一個要求從該使用者不可能有表單驗證 Cookie,除非您正在建立永續性 Cookie。IIS 記錄檔只會顯示您已收到要求中的 Cookie。表單驗證 Cookie,第一個的邀請會在要求後成功的登入嘗試。 案例 2超過用戶端 Cookie 限制時,表單驗證 Cookie 可能也會遺失。在 Microsoft Internet Explorer 中沒有 20 Cookie 的限制。20 Cookie 會在用戶端上建立之後先前的 Cookie 會從用戶端的集合中移除。如果移除.ASPXAUTH Cookie 使用者將被重新導向至登入網頁處理下一個要求時。 您可以以相同的方式來疑難排解這兩種情況。 查看之前重新導向至登入網頁要求。如果這個頁面的要求產生 Cookie,這將會是調查的東西。 如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件: 306070
(http://support.microsoft.com/kb/306070/
)
在 Internet Explorer 中 Cookie 的數字及大小限制 您可以使用 Fiddler 來檢視傳送至用戶端的 HTTP 標頭。擷取資料傳輸後連按兩下一個要求,然後再按 [若要查看設定 Cookie 標頭的 標頭檔。如果您追蹤成功的登入,您將會看到成功的登入回應中設定 Cookie 標頭。 如果要下載 Fiddler,請造訪下列 Fiddler 網站: http://www.fiddlertool.com/fiddler/
(http://www.fiddlertool.com/fiddler/)
案例 3要求離開用戶端之後有可能會影響所送出的封包的各層。若要判斷網路裝置是否正在移除 Cookie,您必須擷取網路追蹤用戶端和在伺服器上,然後尋找要求的 Cookie 的主體中。您想要查看用戶端的要求,以確定已傳送 Cookie,] 及 [檢查伺服器追蹤,以確定伺服器收到 Cookie。 用戶端要求 驗證使用者之後,這是 GET 要求。表單驗證票證資訊是以藍色提示。這可確認 Cookie 資訊保留在用戶端。When you use a network capture tool, like Netmon, you see the traffic that actually went through the adapter. 當您查看到達伺服器的要求時,您想確定伺服器收到相同用戶端傳送的資訊。如果伺服器未收到相同的資訊,需要調查來判斷移除了 Cookie 網路上的其他裝置。 附註也已經移除 Cookie 的 ISAPI 篩選器的執行個體。如果確認 Web 伺服器收到該 Cookie,但 IIS 記錄檔中未列出該 Cookie 檢查 ISAPI 篩選器。您可能必須移除篩選以便查看問題是否已經解決。 表單驗證票證逾時重新導向使用者的其他常見原因是如果表單驗證票證已經過期。表單驗證票證可以兩種方式的逾時時間。如果您使用絕對到期,就會發生第一個案例。具有絕對有效期限驗證票證到期到期時間到期時。例如,設定到期日的 20 分鐘,而使用者造訪該網站下午 2: 00。使用者將被重新導向至登入網頁,如果使用者造訪該網站之後下午 2: 20。如果您使用 [滑動期限,案例是有點複雜。如果使用者造訪網站,到期時間是半過期之後,會更新 Cookie] 及 [產生的票證。比方說,您利用滑動期限設定 20 分鐘的到期日。使用者造訪該網站 2: 00 PM 時及使用者接收設定為 [下午 2: 20 過期的 Cookie。如果使用者造訪網站 2: 10 PM 後,只會更新到期日。如果使用者造訪該網站下午 2: 09,票證是不會更新,因為有一半的到期時間不已經過了。如果 12 分鐘下午 2: 21 造訪網站,然後在等待使用者,將會過期票證。使用者重新導向至登入網頁。 單向方法這種問題是要記錄的表單驗證 Cookie 和票證資訊。如此一來您可以看到是否 Cookie 所收到 IIS 和值為何。您可以只要撰寫一個 HttpModule 中,然後插入該模組至要求管線。您不會修改應用程式的程式碼,以取得您需要的資訊。 附加的範例適用於 Microsoft.NET Framework 1.1 和.NET Framework 2.0,並且有整個註解。這個範例包括下列檔案:
我會指出主要的區域:
如需有關表單驗證的詳細資訊,您可以下載下列 FormsAuthLogger 範例檔案: 摺疊此圖像 ![]()
(http://download.microsoft.com/download/7/2/7/727b0cf2-d4fc-4d19-a632-aa3477998fcd/formsauthlogger.exe)
如往常請隨意送出您想要在將來解決資料行的主題或使用 Ask For It
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
表單的知識庫中的想法。屬性文章編號: 910439 - 上次校閱: 2007年5月31日 - 版次: 1.5
機器翻譯 重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:910439
(http://support.microsoft.com/kb/910439/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 文章翻譯 |





回此頁最上方








