0

I have problem with Google Analytics API .NET. While connecting to GA via api at line

        var certificate = new X509Certificate2(pathToPrivateKey, passToPrivateKey, X509KeyStorageFlags.Exportable);
        ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmailAddress)
        {
            Scopes = scopes
        }.FromCertificate(certificate));

It give below error

Message=The type initializer for 'Google.Apis.Http.ConfigurableMessageHandler' threw an exception.
  Source=Google.Apis.Core
  TypeName=Google.Apis.Http.ConfigurableMessageHandler
  StackTrace:
   at Google.Apis.Http.ConfigurableMessageHandler..ctor(HttpMessageHandler httpMessageHandler)
   at Google.Apis.Http.HttpClientFactory.CreateHttpClient(CreateHttpClientArgs args) in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis.Core\Apis\Http\HttpClientFactory.cs:line 37
   at Google.Apis.Auth.OAuth2.ServiceAccountCredential..ctor(Initializer initializer) in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis.Auth.DotNet4\OAuth2\ServiceAccountCredential.cs:line 217
   at ConsoleApplication3.Program.AuthenticationGA(String pathToPrivateKey, String serviceAccountEmailAddress, String passToPrivateKey) in C:\Documents and Settings\pivotaladmin.WA-PIV\my documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs:line 30
   at ConsoleApplication3.Program.Main(String[] args) in C:\Documents and Settings\pivotaladmin.WA-PIV\my documents\visual studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\Program.cs:line 69
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.IO.FileLoadException
   Message=Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
   Source=Google.Apis.Core
   FileName=System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes
   FusionLog==== Pre-bind state information ===

Project type: Console app
.NET Framework 4.0
MS Visual Studio 2010 Express
Windows Server 2003

I tried the same code on Windows 7 and it works.
I have no idea what goes wrong.
Any idea?

Paweł
  • 133
  • 2
  • 11
  • check that there aren't extra dlls floating around in GAC or set the reference dlls to copy local. – Linda Lawton - DaImTo Dec 19 '14 at 07:47
  • all external dlls - copy local: true, i think that problem could be that in C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 i had no System.Net.Http.dll so I added it using command gacuitl /i System.Net.Http.dll. This dll is used by HttpClientFactory.cs. – Paweł Dec 19 '14 at 08:10
  • @DalmTo I checked on second machine Windows Server 2003 R2 and this time at runtime VS ask me for : c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis.Core\Apis\Http\HttpClientFactory.cs – Paweł Dec 19 '14 at 14:04
  • @DalmTo Checked on Windows Server 2008 R2 - works great. – Paweł Dec 19 '14 at 14:08

1 Answers1

1

It looks like your main problem is the inner exception you got:

InnerException: System.IO.FileLoadException
 Message=Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral,
 PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' or one of its dependencies. 

The good news is that you should just install the following patch: KB2468871, as suggested here: Could not load file or assembly System, Version=2.0.5.0 in .NET 4 MVC 4 application

Community
  • 1
  • 1
peleyal
  • 3,472
  • 1
  • 14
  • 25