我试图处理使用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