Google API 客户端库在发出请求时在 IIS 中冻结
Google API Client Library freezing up in IIS when making request
我一直在使用 Google API Client Library for .NET 将 Google 分析数据加载到我的应用程序中:
最近虽然我发现它已经开始完全冻结。 Execute()
命令连接到 Google 服务器。
成功请求:
https://accounts.google.com/o/oauth2/token
其中 returns 类似于 :
{
"access_token" : "ya30.HAKlQSGZo2GnK5wxlxx9TLTQUyD9Xkt7AZxuQnDY-KhJuCyrCtN_xHIP",
"token_type" : "Bearer",
"expires_in" : 3600
}
但是从 Execute
调用中再也不会 returns。
控制台应用程序中的相同代码 returns 立即,但在 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();
如 中所述,我们目前在 Google.Apis.Auth v 1.9.3 的最新版本中存在错误。
我们已经在我们的存储库 (https://github.com/google/google-api-dotnet-client), so you can test it yourself with the 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
我一直在使用 Google API Client Library for .NET 将 Google 分析数据加载到我的应用程序中:
最近虽然我发现它已经开始完全冻结。 Execute()
命令连接到 Google 服务器。
成功请求:
https://accounts.google.com/o/oauth2/token
其中 returns 类似于 :
{
"access_token" : "ya30.HAKlQSGZo2GnK5wxlxx9TLTQUyD9Xkt7AZxuQnDY-KhJuCyrCtN_xHIP",
"token_type" : "Bearer",
"expires_in" : 3600
}
但是从 Execute
调用中再也不会 returns。
控制台应用程序中的相同代码 returns 立即,但在 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();
如
我们已经在我们的存储库 (https://github.com/google/google-api-dotnet-client), so you can test it yourself with the 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