疑難排解和偵錯網路連線 (Windows 執行階段應用程式)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
網路問題可能會造成應用程式停止回應、當機,或是對使用者顯示無法運作的對話方塊以及易混淆的錯誤訊息。疑難排解和偵錯這些錯誤可能會很困難,因為錯誤有可能發生在網路堆疊的任何位置。
誰會受到影響
所有直接使用 (例如,使用通訊端) 或是間接使用 (使用最後會利用網路的 API) 網路的 Windows 執行階段應用程式,都會受到網路問題的潛在影響。理想的狀況是作業系統會代表應用程式自動處理網路錯誤狀況,而且當作業系統無法自動處理時,應用程式應該準備自行處理錯誤。
選取正確的網路功能
如果 Windows 執行階段應用程式要存取網路,必須在應用程式的資訊清單中啟用某些網路隔離功能。開發應用程式時,通常會使用 Microsoft Visual Studio 2013 來設定這些功能。這些功能會由 Windows 強制執行。如果尚未設定適當的網路功能,可能會封鎖網路存取。
因此,疑難排解網路問題的第一個步驟,是確認已經為應用程式設定適當的網路功能。
網路功能 | 說明 |
---|---|
privateNetworkClientServer |
|
internetClient |
|
internetClientServer |
|
鄰近性 |
允許兩台非常靠近 (可達一英呎) 的電腦使用 Windows.Networking.Proximity 命名空間功能與另一台電腦互動。 |
在決定應用程式所需的網路存取後,請確定已設定適當的網路功能設定。若未設定適當的功能,將會封鎖網路存取。
如需如何啟用網路存取的回送以及疑難排解網路隔離問題的詳細資訊,請參閱如何啟用回送和偵錯網路隔離。
反應網路狀態變更
Windows 8.1、Windows Phone 8.1 或 Windows Server 2012 R2 偵測到新網路時,會自動提供新的連線選項。例如,如果使用者正在使用 3G 網路來串流處理資料,而之後來到 Wi-Fi 網路的範圍,在合理的情況下,應用程式可使用新的連線選項。
在任何行動裝置使用案例中,網路隨時都可能會連線及中斷。在使用者的家中或是工作場所,有可能超出 3G 網路的使用範圍,但是仍然可以使用 Wi-Fi;同樣地,當使用者離開家或工作場所時,也可能會超出 Wi-Fi 網路的使用範圍。此外,有時根本沒有可用的網路。隨著 Wi-Fi 和行動式寬頻網路的普及,這樣的網路變更情形 (網路時斷時連,或是無法使用) 將十分普遍。網路連線不會自動順暢地切換到新網路;這需要應用程式的介入。請注意,Windows 8.1、Windows Phone 8.1 和 Windows Server 2012 R2 的預設原則會先挑選無任何限制的網路,其次才是計量付費網路,也會先挑選較快的網路,其次才是較慢的網路。
每當網路變更發生時,網路存取可能就會受到影響。應用程式可以登錄網路狀態變更通知 (onNetworkStatusChanged),因此當這些網路發生變更時,就會被通知。如果應用程式使用的連線無法再使用 (以錯誤指出),應用程式可能需要執行下列其中一個動作:
- 請重試操作。 如果失敗,則請等候另一個 NetworkStatusChanged 通知。
- 請檢查網路成本,然後嘗試連線至不同網路。
基本疑難排解指導
Windows 執行階段應用程式需要執行下列項目:
當網路發生錯誤時,可以的話,請重試操作。例如,如果驗證失敗,請勿重試操作,但是如果您正在通訊的無線網路因為另一個無線網路可供使用而消失,請重試操作。只要重試操作,許多錯誤都會消失。重試時,請按照之前反應網路狀態變更中規定的指導方針執行。
確定您使用非同步 API,這樣才不會封鎖 UI 執行緒的呼叫。如果網路操作花了很長的時間才完成或是有錯誤,您的應用程式不應該停止回應。請不要在 Windows 執行階段的非同步特性最上層模擬同步行為。
請事先計劃處理錯誤的模型。您設計應用程式的時候,請思考如何對使用者顯示錯誤資訊。例如,Outlook 使用一個樸素的網路指示器;Communicator 則有一個「取代整個 UI」配置;而 Internet Explorer 為顯示網路錯誤的下載,提供一個作業導向對話方塊。發生例外狀況時,抓取狀況的錯誤與例外狀況。了解每個錯誤字串,並適當地通知使用者。
在各種網路環境中利用不同活動來測試您的應用程式,例如中斷網路連線或者重新連線至網路、暫停或恢復網路,或者從一個網路切換到另一個網路。
當您正在測試應用程式並找到不是立即明顯的錯誤時,可以啟用 ETW 追蹤來收集該問題的詳細資料。