【问题标题】:Google API Client Library freezing up in IIS when making request发出请求时,Google API 客户端库在 IIS 中冻结
【发布时间】:2016-01-31 10:30:18
【问题描述】:

我一直在使用Google API Client Library for .NET 将 Google Analytics 数据加载到我的应用程序中:

虽然最近我发现它已经开始完全冻结。 Execute() 命令连接到 Google 服务器。

它成功请求:

 https://accounts.google.com/o/oauth2/token

返回类似:

{
  "access_token" : "ya30.HAKlQSGZo2GnK5wxlxx9TLTQUyD9Xkt7AZxuQnDY-KhJuCyrCtN_xHIP",
  "token_type" : "Bearer",
  "expires_in" : 3600
} 

但之后永远不会从Execute 调用中返回。

控制台应用程序中的相同代码会立即返回,但在 IIS 中它目前永远不会返回。

在以前的版本中它工作得很好(我不确定它改变了哪个版本)。

我已将 Load User Profile 设置为 true。

这可能是什么原因造成的?

   var SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"C:\TEMP\GoogleAnalytics-privatekey.p12";
   X509Certificate2 certificate = new X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);


   // Create credentials (not my real login here)
   ServiceAccountCredential credential = new ServiceAccountCredential(
      new ServiceAccountCredential.Initializer("86987278011-ctegcus4og7kn6oigkrv8po5pf67bbgj@developer.gserviceaccount.com")
      {
          Scopes = new[] { AnalyticsService.Scope.AnalyticsReadonly }
      }.FromCertificate(certificate));

   // Create the service
   var service = new AnalyticsService(new BaseClientService.Initializer()
   {
       HttpClientInitializer = credential,
       ApplicationName = "Google Analytics Application",

   });

   // get accounts
   accounts = service.Management.Accounts.List();
   var items = accounts.Execute();

【问题讨论】:

  • 您是从 Web 请求的上下文中调用的吗?我有一个类似的设置(在 IIS 上运行),但我使用 Hangfire 将其作为计划事件运行。我没有尝试在请求中运行它。
  • 我也有同样的问题。起初,我的项目中使用了 Google API 客户端库 v1.9.0。就在几天前,一些 Drive API 请求停止工作。因此,我将 API 客户端库升级到了最新版本,但情况变得更糟,请求在第一次获取用户请求时被冻结,就像您一样。不知道如何解决。
  • 当时我并没有真正使用实验,所以我只是作弊并在几个小时的修补后将其禁用,但无济于事。很惊讶我找不到其他任何东西。对不起:-/
  • @Simon_Weaver,我的应用程序是桌面应用程序。和你一样的问题。
  • 当我创建控制台应用程序时,它运行良好。你知道它为你打破的确切版本吗?也许我们可以完善一个功能日志——我想应该已经检查过了!

标签: asp.net-mvc oauth google-api google-analytics-api google-api-dotnet-client


【解决方案1】:

正如Google Calendar API - Not Returning From Execute() C# 中所述,我们目前在最新版本的 Google.Apis.Auth v 1.9.3 中存在一个错误。

我们已经在我们的存储库 (https://github.com/google/google-api-dotnet-client) 中对此进行了修复,因此您可以使用 Analytics API (https://developers.google.com/resources/api-libraries/download/analytics/v3/csharp) 自行对其进行测试。

计划在接下来的几周内发布该库的新版本,敬请期待 - http://google-api-dotnet-client.blogspot.com/


更新(12 月 15 日):适用于 1.10.0 的新 NuGet 包可用,请参阅:http://google-api-dotnet-client.blogspot.com/2015/12/announcing-release-of-1100.html

【讨论】:

  • Peleyal,谢谢您的回答。我发现 Google Apps 服务帐户现在正在修改中。 Goolge 开发者控制台正在进行大量更改。这可能是新版本在服务帐户请求上失败的原因。这些修改什么时候完成?期待新的开发者控制台和您的新库。
  • 我认为(不幸的是)在 1.9.3 中引入的错误与 Google Developer Console 中的更改无关。一个新的库将在接下来的几周内发布。
  • 现在有人验证它是否可以从头开始工作?在发布带有此修复程序的新版本之前,我想确信它适用于所有人。
猜你喜欢
  • 2013-01-14
  • 1970-01-01
  • 2015-10-15
  • 2016-07-02
  • 1970-01-01
  • 2012-08-15
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多