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有很好的用法。