【发布时间】: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