首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google API C# - AccessViolationException

Google API C# - AccessViolationException
EN

Stack Overflow用户
提问于 2014-07-13 14:26:07
回答 2查看 1.1K关注 0票数 1

我试图使用简单的C#控制台应用程序访问(在本例中为Plus服务)。每次调用API函数时,我都会遇到一个非常奇怪的异常:

“System.AccessViolationException”类型的未处理异常发生在未知模块中。 其他信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。

当我获得API端点时,就会发生这种情况,如下例所示:

代码语言:javascript
运行
复制
Client.People.Get("me").Execute();

以前有人遇到过这个问题吗?

编辑:

我已经下载了GPlus示例,仍然有相同的问题,但现在在里面:

代码语言:javascript
运行
复制
Oauth2Service.TokeninfoRequest request = service.Tokeninfo();

我认为这里常见的情况是生成的代码类:

  1. https://code.google.com/p/google-api-dotnet-client/source/browse/20120425-1.1.4497-beta/Generated/Source/Google.Apis.Oauth2.v2.cs?repo=contrib&name=20120503-1.2.4506-beta
  2. https://code.google.com/p/google-api-dotnet-client/source/browse/Current/Generated/Source/Google.Apis.Plus.v1.cs?repo=contrib&r=c757b64c06e143c8b28bda15b4ec7e6a2738d2e5

编辑2:

我在附上堆叠痕迹:

( Google.Apis.Plus.v1.PeopleResource.GetRequest.set_UserId(String值)在Google.Apis.Plus.v1.PeopleResource.GetRequest..ctor(IClientService服务中,在c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet.Publisher\Template\Build\Google.Apis.Plus.v1.cs:line 2661 at Google.Apis.Plus.v1.PeopleResource.Get(String userId)的c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet.Publisher\Template\Build\Google.Apis.Plus.v1.cs:line 2649中Core.External.GoogleService.GooglePlusApplicationClient.Test() in e:\Copy\Feedly\Backend\Core.External.GooglePlus\GooglePlusApplicationClient.cs:line 34 at FeedlyTest.Program.Main(String[] args) ( e:\Projects\Feedly\Backend\Testing\Program.cs:line 88 )

编辑3:

当我使用Ctrl+F5组合时,它就起作用了。我读到这个组合正在禁用调试器。首先,可能在调试器模式下,系统运行在32位(然后无法访问32位边界外的内存)。我试图将调试平台更改为64位,但没有帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-07-14 19:58:02

在Properties下,->构建->平台目标:尝试从“任意CPU”更改为"x86“,或者尝试打开”偏好32位“。

票数 0
EN

Stack Overflow用户

发布于 2014-07-15 00:30:14

你用的是什么样品?Google+快速启动示例是最新的。此外,您可能会发现这篇关于OAuth 2在.NET中的流的博客文章很有用。

请注意,Google+示例目前在扎马林和Visual中都可以工作,因此您可以尝试使用免费可用的扎马林来确定它是否是您的环境。

确保在使用快速启动时,您要使用http://server:port/signin.ashx -在某些配置中,web应用程序将默认为另一条路径。

您还可以发布更多关于您正在使用的代码的信息吗?例如,下面的代码显示了上面所示的tokeninfo调用的更完整的示例:

代码语言:javascript
运行
复制
Oauth2Service service = new Oauth2Service(
    new Google.Apis.Services.BaseClientService.Initializer());
Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
request.AccessToken = token.AccessToken;

Tokeninfo info = request.Execute();

我在GitHub上创建了一个非常简单的GitHub,您可以克隆它:

代码语言:javascript
运行
复制
git clone https://github.com/gguuss/google-dotnet-demo

在Visual中打开项目时,还原NuGet包,生成项目,然后输入访问令牌。如果一切正常,演示将向您展示一些TokenInfo数据。

我添加了另一个显示授权的演示。当我这样做时,我用Visual 2013进行了测试,我不得不添加以下内容作为后安装步骤.

代码语言:javascript
运行
复制
copy /Y "$(SolutionDir)packages\Microsoft.Bcl.Async.1.0.16\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll" "$(TargetDir)Microsoft.Threading.Tasks.Extensions.Desktop.dll"

.如本堆栈溢出问题中所述

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24723701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档