我试图使用简单的C#控制台应用程序访问(在本例中为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(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位,但没有帮助。
发布于 2014-07-14 19:58:02
在Properties下,->构建->平台目标:尝试从“任意CPU”更改为"x86“,或者尝试打开”偏好32位“。
发布于 2014-07-15 00:30:14
你用的是什么样品?Google+快速启动示例是最新的。此外,您可能会发现这篇关于OAuth 2在.NET中的流的博客文章很有用。
请注意,Google+示例目前在扎马林和Visual中都可以工作,因此您可以尝试使用免费可用的扎马林来确定它是否是您的环境。
确保在使用快速启动时,您要使用http://server:port/signin.ashx
-在某些配置中,web应用程序将默认为另一条路径。
您还可以发布更多关于您正在使用的代码的信息吗?例如,下面的代码显示了上面所示的tokeninfo调用的更完整的示例:
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,您可以克隆它:
git clone https://github.com/gguuss/google-dotnet-demo
在Visual中打开项目时,还原NuGet包,生成项目,然后输入访问令牌。如果一切正常,演示将向您展示一些TokenInfo数据。
我添加了另一个显示授权的演示。当我这样做时,我用Visual 2013进行了测试,我不得不添加以下内容作为后安装步骤.
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"
https://stackoverflow.com/questions/24723701
复制相似问题