ASP.NET 的疑難排解

文章翻譯 文章翻譯
文章編號: 891032 - 檢視此文章適用的產品。
ASP.NET 支援語音資料行: 疑難排解 ASP.NET
若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It 表單的意見反應。另外還有連結至表單底部的 這個資料行。
全部展開 | 全部摺疊

在此頁中

簡介

再次 Hello,歡迎來到十一月 ' 04 版本的支援語音資料行。我想要感謝 Jim Cheshire,技術支援工程師此處在 Microsoft 支援 ASP.NET 對他所佔的比重。曹具有很棒的想法,支援語音資料行,而且想要共用它們。透過未來的幾個月尋找 Jim 的成果,並如往常傳送您為未來的資料行的建議給我們。感謝您 Jim!

Jim 已使用的 Microsoft 六年 FrontPage、 VB 和 ASP.NET 小組成員。在這段時間他已經在 MSDN 上, 寫入 Office 開發人員中心,而他是 FrontPage 選擇性版使用 Microsoft Office FrontPage 2003 中的書籍作者。曹也有在網站上他用來提供可用增益集的 FrontPage 讓網頁開發人員進行最多出的 Microsoft 產品。以下是該網站位址:
http://www.jimcosoftware.com
請提取向上一個椅子開始鞋,與讀取透過所有有關疑難排解 ASP.NET,我們資料行和記住可以提交您的想法對我們使用包含在每個資料行中的 「 FOR IT ASK 」 連結我們發佈。

Jeremy

ASP.NET 的疑難排解

你有看到影片 Shrek 嗎?影片 Shrek,星形是一個的 ogre 恐怖檢疫習慣使用的醜陋綠色生物。在影片早期 Shrek 會 proclaims ogres 複雜性依所說的 「 ogres 就像是 onions。它們擁有的圖層 」。

ASP.NET 更就像是一個 ogre。它具有許多層級--Web 用戶端、 任何中繼裝置像 Proxy 伺服器在 Web 伺服器和網路 ’s 上,以及其他資源應用程式接觸。所有這些層會使 ASP.NET 困難除非您知道哪一項工具使用以及如何適當地使用該工具的疑難排解。

在進行我自己過時,這一系列將如何教導您使用的部分工具的風險我們使用 PSS 中來解決問題。我超過如何如使用一些真正精彩的工具:
  • 「 網路監視器
  • fiddler
  • Filemon / Regmon
  • Windows (Windbg) 的偵錯工具
  • SOS (Windbg 副檔名為偵錯 Managed 程式碼)
  • DBGClr
我 won’t 進入密切的使用這些工具的詳細資料,但我會提供您穩固的基礎上使用這些工具,以便您可以向下切入到許多您可能會遇到的問題的根本原因。

sniffers

這一系列的第一個部分會處理網路 sniffers。 let’s 養成右中。

範例問題:

您有一個 ASP.NET 應用程式,使用 Windows 整合式驗證,並具備 「 匿名 」 已關閉。其中一個您的使用者報告它們不可以存取站台。而是,會重複提示他們輸入使用者名稱和密碼。您認為使用權限是否正確為 此使用者。

這種問題是完美候選疑難排解使用網路 sniffer。一個通天鼻會讓您判斷用戶端會將驗證資訊傳送到伺服器。 在 Microsoft,我們使用的網路 Sniffer 是網路監視器。

「 網路監視器

您可以從下列 Microsoft FTP 站台下載時間 bombed 的網路監視器版本:
ftp://ftp.microsoft.com/PSS/Tools/Netmon/Netmon2.zip
這個 Zip 檔案密碼是 追蹤。安裝網路監視器之後會發現 [系統管理工具,然後按一下 [網路分析工具
選取網路介面,以擷取
當您第一次啟動網路監視器時,的首先您必須執行的是選取您想要使用 [圖 1] 所示的對話方塊中的網路卡。
摺疊此圖像展開此圖像
Figure 1: Choosing a network in Network
		  Monitor

圖 1: 在 「 網路監視器 」 中選擇一個網路

請注意圖 1] 中選取的介面是撥號連線或 VPN 介面卡介面的內容中所示。在大多數情況下,您會要選取撥號或 VPN 連線以外的其他介面之一。我選擇使用 VPN 的螢幕擷取畫面 don’t 要選擇因為我要讓您清楚地查看如何它會被識別的介面卡。再一次在絕大多數的情況下您想要選擇的配接器是一個 doesn’t 看起來像一個圖所示,在 [圖 1]。

如果需要變更網路介面卡,您擷取您可以存取要執行這項操作,依序按一下 [擷取] 功能表上的 [網路] 選項的對話方塊。
設定緩衝區大小
「 網路監視器有預設擷取緩衝區的 1 MB。 也就是說它會收集 1 MB 的網路資料之後它會啟動覆寫追蹤。在許多情況下,您可能要增加該緩衝區。要這麼做,請按一下 擷取 然後按一下 [緩衝區設定。 這會顯示 [擷取緩衝區設定] 對話方塊,您可以在此增加緩衝區的大小。您想要指定的大小取決多少網路流量您會看到網路上。您想要產生您感興趣啟動擷取時立即框架的一個問題 2 或 3 MB 緩衝區應該是多個足夠。

注意,在 擷取緩衝區設定值] 方塊也可以變更框架大小。這會在您想要擷取只傳送標頭的情況下很有用。藉由減少框架大小,您可以在緩衝區中儲存一些空間,並仍擷取您需要的標頭。我 won’t 進入詳細資料上使用,本文中。
開始擷取
現在你得到緩衝區組,’re 準備開始擷取資料。您可以啟動數個不同的方式擷取:
  • 鍵盤上,請按 F10。
  • 按一下 [擷取],然後按一下 [開始] (從功能表。
  • 按一下 [(此按鈕看起來會像播放按鈕)] 工具列上的 [開始擷取] 按鈕。
當您擷取網路監視器的封包,看到公尺移動和變更,統計資料,如 [圖 2] 所示。如果您 don’t 看到發生時所擷取的任何項目,您可能需要變更您擷取的網路卡。
摺疊此圖像展開此圖像
Figure 2: Network Monitor while capturing
		  packets

圖 2: 網路監視器擷取封包時

您啟動在 「 網路監視器擷取之後重現問題,您需要擷取,然後停止擷取,按一下在 「 網路監視器按一下 拍攝,然後按一下 [停止 的 [停止] 按鈕,或您鍵盤上按下 F11。您現在已經準備好檢查已擷取的資料。

附註「 網路監視器擷取只有熄滅時,網路上的資料。 因此,您通常無法擷取要求對您的 Web 應用程式藉由在主控台瀏覽。在某些情況下瀏覽使用 IP 位址或完整格式的網域名稱將會讓您擷取本機電腦上。
檢查所擷取的資料
停止擷取之後您可以檢視所擷取的資料,按一下 [擷取],然後按一下 [顯示擷取資料,或您鍵盤上按下 F12。預設情況下,您會看到發生跨網路傳輸時所擷取如 [圖 3] 所示的所有資料。
摺疊此圖像展開此圖像
Figure 3: Captured data in Network
		  Monitor

圖 3: 擷取在 「 網路監視器 」 中的資料

在這種情況下會很有幫助能夠只檢視 HTTP 封包。輕鬆地藉由篩選來顯示 HTTP 通訊協定擷取的資料來完成。若要篩選所擷取的資料,拍攝,然後按一下 [篩選器,或您鍵盤上按下 F8 或是按一下工具列按鈕看起來會像一個漏斗。

在 [顯示篩選器] 對話方塊連按兩下 通訊協定 = = 任何 篩選器顯示 [運算式] 對話方塊,如 [圖 4] 所示。
摺疊此圖像展開此圖像
Figure 4: The Expression dialog box
		  provides powerful filtering capabilities

圖 4: [運算式] 對話方塊提供了強大的篩選功能

根據預設值,網路監視器 」 會顯示所有通訊協定。若要只顯示 HTTP] 通訊協定按一下 [全部停用,連按兩下 HTTP 通訊協定,以選取它,然後再按一下 [確定]。「 網路監視器將會顯示只 HTTP 通訊協定。

附註您可以篩選網路監視器之前擷取,讓它只會擷取符合您設定篩選器的框架。在大多數情況下我偏好在擷取後篩選。

之後篩選擷取的封包,以便顯示 HTTP 通訊協定,網路監視器將會顯示所擷取的 HTTP 資料的每個框架。按兩下 [框架可以檢閱該封包的詳細的資訊。在案例中我們處理,我們嘗試決定是否用戶端已經傳送到 Web 伺服器驗證的任何資訊。[圖 5] 所示的擷取顯示從 ASP.NET 網頁 GET 要求回應。請注意 Web 伺服器有回應回為 401 狀態代碼,表示已拒絕存取至 Web 網頁。
摺疊此圖像展開此圖像
Figure 5: Network Monitor showing an
		  “Access Denied” response when authentication is required

圖 5: 網路監視器需要驗證時,顯示 「 拒絕存取 」 的回應

查看 WWW 驗證標頭,您可以查看 [圖 5] 中 Web 伺服器可接受 Kerberos (交涉) 以及 NTLM 驗證。因此,我們預期在用戶端將這裡傳送驗證資訊會自動在 「 拒絕存取 」 訊息之後,我們看到。
序列數字
若要到 [圖 5] 所示的封包的用戶端 ’s 回應我們需要查看這個回應中的序號。概念的序列數字經常 misunderstood 網路監視器的檢閱中追蹤。它們是以瞭解事情發生的順序索引鍵。

在 [圖 5] 中的中間窗格,您注意到 HTTP 通訊協定已經展開以顯示所有 HTTP 標頭。正上方 HTTP 通訊協定是 TCP] 通訊協定,而您可以查看序列數字和 ack 數 TCP 區段的一部份。(由 seq TCP 封包中) 的序號會提供方法來識別特定的 TCP 區段。每個 TCP 順序應該會伴隨的認可或 ack,該序列。

這裡 ’s 從一個 HTTP GET 要求的追蹤程式碼片段:
11 4294967263.4294633595 LOCAL 00045A420DBC HTTP GET Request 
(from client using port 3134) DADATOP 192.168.0.4 IP 
TCP: .AP..., len: 402, seq:3410290480-3410290882, ack:1947093623, win:17520, src: 3134 dst:  80 
注意結束的序列數字是 3410290882。因此,到伺服器 ’s 回應必須找到框架,以確認該序列。 亦即您正在尋找的 3410290882 ack 與回應。這裡是該框架:
12 4294967263.4294636605 00045A420DBC LOCAL HTTP Response (to client using port 3134) 192.168.0.4 DADATOP IP 
TCP: .A...., len: 1460, seq:1947093623-1947095083, ack:3410290882, win:65133, src:  80 dst: 3134
這些數字很重要,因為有時回應將會出現在要求中網路監視器追蹤之前的時間。特定封包的順序是唯一的方式是檢查區段使用這些數字。

因為我們正在透過這項追蹤用戶端正在傳送驗證資訊,我們可以使用 TCP 區段來追蹤 HTTP GET 要求與伺服器的回應。以下是從框架從用戶端傳送驗證資訊的程式碼片段:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP 
HTTP: GET Request (from client using port 3135)
  HTTP: Request Method = GET
  HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx
  HTTP: Protocol Version = HTTP/1.1
  HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.
  HTTP: Accept-Language = en-us
  HTTP: Accept-Encoding = gzip, deflate
  HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
  HTTP: Host = alien
  HTTP: Connection = Keep-Alive
  HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA
44 77 3D 3D 0D 0A 0D 0A         AAADw==....   
告訴哪些? 這我們我們可以看到授權標頭設定為 [交涉 」,以及我們可以看到該標頭中傳送的字元長字串。這個回應會告訴我們在用戶端與伺服器交涉的 NTLM 連線。我們知道 NTLM 驗證正在使用這裡因為第一個字元是一個 '"T"。如果它已"Y",它會是 Kerberos。標頭設定為 「 交涉"代替"NTLM]。這並不表示它,但會交涉授權方法並先嘗試 Kerberos,如果可以將使用 Kerberos 或 「 NTLM。如果它不能使用 Kerberos,它就會使用 NTLM。

[圖 6 是框架,您就可以看到驗證資訊就傳送,如上所示的螢幕擷取畫面。請注意,我們就可以看到每個標頭的詳細資料,已被展開 HTTP 標頭中間框架中。
摺疊此圖像展開此圖像
Figure 6: The
		  frame containing authentication information

圖 6: 包含驗證資訊的框架

此框架會告訴我們在用戶端就是大部分絕對傳送的驗證資訊。如果使用者在此時取得被拒絕存取,則不論是因為使用者並不會具有該資源的權限,或者它是因為驗證資訊在某個時間點跨網路傳輸變更。
另一種方法篩選
在許多情況下您可能疑難排解已傳輸大量的伺服器。在這些情況下您可能會看到大量的 HTTP 框架,而且可能很難找到正確的。利用更多的篩選運算式您可以輕易地得到從右至正確的框架。

按一下 [篩選] 按鈕,或按您鍵盤以帶出 [顯示篩選] 對話方塊上的 F8 鍵。按一下 [,右邊以新增新的運算式的 運算式。有兩個不同的篩選,您可能要在這種情況下使用: IP 位址,並由 HTTP 狀態碼的篩選器的篩選器。

若要 IP 位址篩選按一下 [屬性] 索引標籤,直到您看到 IP,向下捲動在左窗格中。展開 [IP,然後向下捲動,直到您看見 來源位址。選取 = = 針對此關聯性,然後輸入 IP 用戶端電腦,如 [圖 7] 所示的位址。您可以完成這個動作之後,您只會看到來自您所輸入的 IP 位址的框架。
摺疊此圖像展開此圖像
Figure 7: Filtering by IP
		  Address

圖 7: IP 位址篩選

它 ’s 一點要注意的幾次 [IP 位址可能不是用來篩選追蹤最佳的屬性。oftentimes 使用者將會被攻擊透過路由器或防火牆的 Web 伺服器。在這些情況下 [IP 位址將通常會在路由器或防火牆和不在用戶端的 IP 位址。

您也可以篩選 HTTP 狀態碼。如果您喜歡快速找出其中一個 401 傳送至用戶端框架,您可以篩選 401 HTTP 狀態碼。若要這麼做,請選取 [通訊協定: 屬性] 清單中的 [HTTP 展開它。向下,捲動然後按一下 [狀態碼。選取 [= = 在關聯的按一下 [小數點] 選項按鈕 (重要),如 [圖 8] 所示,在 [] 欄位中輸入 401,然後按一下 [確定]。「 網路監視器會顯示其中已傳送 401 狀態碼,那些框架,如 [圖 8] 所示。
摺疊此圖像展開此圖像
Figure 8: Filtering by HTTP status
		  code

圖 8: HTTP 狀態碼篩選
位於傳送 「 401 框架後再按 F7 就會顯示在鍵盤上,若要關閉篩選器。傳送 「 401 框架將仍然會反白顯示,然後您可以再檢查周圍框架的用戶端 ’s 回應 「 401。

fiddler – HTTP 偵錯 Proxy

如果您正在疑難排解的用戶端電腦上瀏覽從 Internet Explorer,您可以使用網路監視器代替 Fiddler (如 [圖 9] 所示) 擷取從用戶端傳送的 HTTP 資訊。fiddler 擷取只 HTTP 封包,並直接將 Internet Explorer 整合。
摺疊此圖像展開此圖像
Figure 9: Fiddler

圖 9: Fiddler

[圖 9] 可以查看 401 回應從伺服器、 然後您可以看到用戶端使用 交涉 標頭 (反白顯示) 來回應]。在這種情況下之後用戶端會傳送驗證 (也就是此問題無關),但是我們可以清楚地看到用戶端藉由傳送 Kerberos 票證沒有其一部份,便會發生執行階段錯誤。

您可以從下列網站下載 Fiddler:
http://www.fiddlertool.com.

什麼 ’s 下一個?

使用網路監視器 」 或 「 Fiddler,您可以經常排除用戶端為驗證失敗的問題。下個月我們超過 Filemon 和從 SysInternals Regmon 的用法。這些工具是在檔案系統上的權限問題的疑難排解和登錄中特別有用。
如往常請隨意送出想法在主題上您想要在未來的資料行或使用 Ask For It 表單的知識庫,附上地址。

屬性

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

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com