0

我試圖處理使用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天的任何答案。有沒有人?

回答

2

對不起。 它看起來像一個錯誤,我剛剛在我們的問題跟蹤器中打開一個新問題 - 您可以添加更多的細節here。 我們將嘗試在下一個版本中修復它。

+0

感謝您的回答。 – axe 2013-03-25 11:18:07

0

在接下來的幾個星期裏,我們將發佈1.4.0-beta版本,該版本已針對此問題進行了修復。爲了讓您知道,新版Google.Apis核心庫將爲PCL。它需要將.NET框架升級到4.0,並且TPL有很好的用法。