Google Plus API C # - AccessViolationException

1

В этом случае я пытаюсь использовать Службы API Google (Plus Service), используя простое консольное приложение С#. Каждый раз, когда я вызываю функции API, я встречаю очень странное исключение:

Необработанное исключение типа "System.AccessViolationException" произошло в Unknown Module.

Дополнительная информация: Попытка чтения или записи защищенной памяти. Это часто свидетельствует о том, что другая память повреждена.

Это случается, когда я получаю конечные точки API, как этот пример:

Client.People.Get("me").Execute();

Раньше у кого-то была эта проблема?

РЕДАКТИРОВАТЬ:

Я загрузил образец GPlus и все еще получаю ту же проблему, но теперь внутри:

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-бета

  2. https://code.google.com/p/google-api-dotnet-client/source/browse/Current/Generated/Source/Google.Apis.Plus.v1.cs?repo=contrib&r=c757b64c06e143c8b28bda15b4ec7e6a2738d2e5

EDIT 2:

Я прикрепляю стек:

в Google.Apis.Plus.v1.PeopleResource.GetRequest.set_UserId (значение строки) в Google.Apis.Plus.v1.PeopleResource.GetRequest..ctor (служба IClientService, строка userId) в c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet.Publisher\Template\Build\Google.Apis.Plus.v1.cs: строка 2661 в Google.Apis.Plus.v1.PeopleResource.Get (строка userId) в c:\code.google.com\google-api-dotnet-client\default_gen\Tools\Google.Apis.NuGet.Publisher\Template\Build\Google.Apis.Plus.v1.cs: строка 2649 в Core.External.GoogleService.GooglePlusApplicationClient.Test() в e:\Copy\Feedly\Backend\Core.External.GooglePlus\GooglePlusApplicationClient.cs: строка 34 в FeedlyTest.Program.Main(String [] args) в e:\Projects\Feedly\Backend\Testing\Program.cs: строка 88

ИЗМЕНИТЬ 3:

Когда я использую комбинацию Ctrl + F5, она работает. Я прочитал, что комбинация отключает отладчик. Сначала подумал, может быть, в режиме отладчика система работает на 32 бит (а затем не может получить доступ к памяти, которая находится за пределами 32-битной границы). Я попытался изменить платформу отладки на 64-битную, но это не помогло.

  • 0
    Какую версию библиотеки вы используете? Последние версии: 1.8.2 для базовой библиотеки и 1.8.1. * Для G + API. Прикрепленные файлы старые.
  • 0
    Я использую последнюю версию (1.8.1) от NUGET, только что прикрепил соответствующие классы (Это то, что я получил с помощью поиска Google) ... Также возникла та же проблема с API YouTube тоже
Показать ещё 4 комментария
Теги:
google-api
google-plus
access-violation

2 ответа

0

Какой образец вы используете? Образец QuickStart Google+ является самым новым. Кроме того, вы можете найти это сообщение в блоге о потоках OAuth 2 в.NET.

Обратите внимание, что образец Google+ в настоящее время работает в Xamarin, а также в Visual Studio, поэтому вы можете попытаться определить, использует ли ваша среда свободную доступную среду IDE.

Убедитесь, что при использовании быстрого запуска, который вы собираетесь на http://server:port/signin.ashx - в некоторых конфигурациях веб-приложение по умолчанию будет использовать другой маршрут.

Можете ли вы также разместить дополнительную информацию о коде, который вы используете? Например, следующий код показывает более полный пример вашего вызова tokeninfo сверху:

Oauth2Service service = new Oauth2Service(
    new Google.Apis.Services.BaseClientService.Initializer());
Oauth2Service.TokeninfoRequest request = service.Tokeninfo();
request.AccessToken = token.AccessToken;

Tokeninfo info = request.Execute();

Я создал очень простую демонстрацию Google.NET Client API на GitHub, которую вы можете клонировать:

git clone https://github.com/gguuss/google-dotnet-demo

Когда вы открываете проект в Visual Studio, восстанавливаете пакеты NuGet, создаете проект и вводите токен доступа. Если все будет работать, демо покажет вам некоторые данные TokenInfo.

Я добавил еще одну демонстрацию, подтверждающую авторизацию. Когда я это сделал, я протестировал с помощью Visual Studio 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"

... как описано в этом вопросе.

  • 0
    Я использовал пример здесь: github.com/googleplus/gplus-quickstart-csharp Также проблема сохраняется на Youtube API тоже ... Я уверен, что источник проблемы не в моем коде, возможно, в моей среде.
  • 0
    Добавлены дополнительные параметры разрешения.
Показать ещё 7 комментариев
0

В разделе "Свойства проекта" → "Создать" - "Платформа". Попробуйте перейти от "Любой процессор" к "x86" или вместо этого попробуйте включить "Предпочитаю 32-разрядный".

  • 0
    Уже попробовал. Не работает...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню