Google Analytics v3 API で TaskCanceledExceptionが発生する - C#

Google Analytics v3 API で TaskCanceledExceptionが発生する現象について紹介します。
サービス終了に関する注意
Google Universal Analytics はサービスを終了したため、現在はこの記事で紹介しているコードは動作しません。 新しい Google Analytics 4 (GA4) プロパティを利用する必要があります。 GA4プロパティからのデータ取得はこちらの記事を参照してください。

現象

プログラムの実行時に Google Analytics にアクセスしたタイミングで、下記の「タスクが取り消されました。」例外が発生します。

詳細

エラーの詳細を確認すると、System.Threading.Tasks.TaskCanceledException 例外が発生していることが確認できます。

************** 例外テキスト **************
System.Threading.Tasks.TaskCanceledException: タスクが取り消されました。
   場所 Google.Apis.Requests.ClientServiceRequest`1.Execute() 場所 C:\Users\mdril\Documents\GitHub\google-api-dotnet-client\Src\GoogleApis\Apis\Requests\ClientServiceRequest.cs:行 96
   場所 (プログラム名).(フォーム名).(メソッド名) 場所 (C#のコードのパス):行 nn
   場所 System.Windows.Forms.Control.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnClick(EventArgs e)
   場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   場所 System.Windows.Forms.Control.WndProc(Message& m)
   場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   場所 System.Windows.Forms.Button.WndProc(Message& m)
   場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


コードを調査すると、DataResource.GaResource.GetRequest オブジェクトの Execute() メソッドを呼び出す際にSystem.Threading.Tasks.TaskCanceledException が発生しています。

対処法

以下の対処をして改善されるか確認します。

方法1:Google Analytics API のライブラリのアップデート

最新のGoogle Analytics API のライブラリに更新します。NuGetを利用してインストールした場合はパッケージ マネージャー コンソールで下記のコマンドを実行します。
Update-Package Google.Apis.Analytics.v3

ライブラリのアップデート後プロジェクトを再ビルドして、動作確認します。

方法2:ターゲット フレームワークを上げる

多くの場合、方法1で解消することが多いですが、うまくいかない場合は、プログラムのターゲット フレームワークの.NET Framework のバージョンを上げます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2018-09-25
iPentec all rights reserverd.