【发布时间】:2014-07-13 14:26:07
【问题描述】:
我正在尝试使用简单的 C# 控制台应用程序访问 Google API 服务(在本例中为 Plus 服务)。每次调用 API 函数时,我都会遇到一个非常奇怪的异常:
“System.AccessViolationException”类型的未处理异常 发生在未知模块中。
附加信息:试图读取或写入受保护的内存。 这通常表明其他内存已损坏。
当我像这个例子一样获取 API 端点时会发生这种情况:
Client.People.Get("me").Execute();
以前有人遇到过这个问题吗?
编辑:
我已经下载了 GPlus 示例,但仍然遇到同样的问题,但现在在里面:
Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
我认为这里的常见情况是关于生成的代码类:
编辑 2:
我正在附加堆栈跟踪:
在 Google.Apis.Plus.v1.PeopleResource.GetRequest.set_UserId(字符串值) 在 c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet 中的 Google.Apis.Plus.v1.PeopleResource.GetRequest..ctor(IClientService 服务,字符串 userId)。 Publisher\Template\Build\Google.Apis.Plus.v1.cs:line 2661 在 c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet.Publisher\Template\Build\ 中的 Google.Apis.Plus.v1.PeopleResource.Get(String userId) Google.Apis.Plus.v1.cs:第 2649 行 在 e:\Copy\Feedly\Backend\Core.External.GooglePlus\GooglePlusApplicationClient.cs:line 34 中的 Core.External.GoogleService.GooglePlusApplicationClient.Test() 在 e:\Projects\Feedly\Backend\Testing\Program.cs:line 88 中的 FeedlyTest.Program.Main(String[] args) 处
编辑 3:
当我使用 Ctrl+F5 组合时,它正在工作。 我读到该组合正在禁用调试器。首先想到,可能在调试器模式下,系统运行在32位(然后无法访问32位边界之外的内存)。 我尝试将调试平台更改为 64 位,但没有帮助。
【问题讨论】:
-
您使用哪个版本的库?最新版本是核心库的 1.8.2 和 G+ API 的 1.8.1.*。您附加的文件是旧的。
-
我使用的是 NUGET 的最新版本(1.8.1),只是附加了相关的类(这是我通过谷歌搜索得到的)...... YouTube API 也有同样的问题
-
您使用的是 Visual Studio 2012 或更高版本吗?
-
我使用的是 Visual Studio 2013
-
堆栈跟踪(在编辑 2 中) - 来自不同的调用,请添加正确的调用。您是否以管理员身份运行 VS?您的环境中似乎缺少某些东西......但我们仍然无法弄清楚它是什么。
标签: c# google-api google-plus access-violation