我試圖處理使用Google Drive SDK時的網絡故障異常,並且出現以下問題。 我斷開我的網絡,並運行此代碼Google Drive SDK提取導致未處理的異常
try
{
FilesResource.InsertRequest r = service_.Files.Insert(body);
r.Fetch();
} catch
{
Console.WriteLine("Error");
}
但不是打印「錯誤」的應用程序被終止,由於未處理的異常。 調試器顯示以下堆棧跟蹤
Unable to connect to the remote server
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult, TransportContext& context)
at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult asyncResult)
at Google.Apis.Requests.Request.EndAttachBody(IAsyncResult asyncResult) in c:\code.google.com\google-api-dotnet-client\default_release\Tools\BuildRelease\bin\Debug\output\default\Src\GoogleApis\Apis\Requests\Request.cs:line 714
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.ContextAwareResult.CompleteCallback(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.ContextAwareResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.HttpWebRequest.SetResponse(Exception E)
at System.Net.HttpWebRequest.SetAndOrProcessResponse(Object responseOrException)
at System.Net.ConnectionReturnResult.SetResponses(ConnectionReturnResult returnResult)
貌似Fetch()
做裏面的一些異步操作和異常沒有被處理。所以我找不到處理這個異常的方法。它總是終止我的應用程序。我該如何解決這個問題?
更新
我發現這行代碼
Stream bodyStream = request.EndGetRequestStream(asyncResult);
在Src\GoogleApis.Tests\Apis\Requests\RequestTest.cs:731
EndGetRequestStream拋出一個異常,這是由線程未處理的,所以它看起來這是一個客戶端API中的錯誤。我對嗎?任何解決方法?
更新
任何答案?這非常重要。每當我斷開網絡連接時,我的應用程序就會崩潰,如果不觸及Google API源代碼,就無法解決這個問題。我將BeginGetResponse()
更改爲GetResponse()
並重新編譯了代碼,因此它目前適用於我,Fetch()
會按預期引發異常,但同步和異步操作共享一個通用代碼(同步操作執行異步並等待),所以目前我無法執行異步取。你們會解決這個問題嗎?
更新
谷歌稱We support the Google Drive SDK on Stack Overflow
。 夥計們,你真的爲你的SDK提供了一些支持嗎?我等待幾乎5天的任何答案。有沒有人?
感謝您的回答。 – axe 2013-03-25 11:18:07