ASP.NET using analytics Reporting API does not wor

2019-06-11 02:20发布

When I run my asp.net application on local host everything works great but when i publish my app on the web server this error shows up:

Method 'ApplyAuthenticationToRequest' in type 'Google.Apis.Authentication.OAuth2.OAuth2Authenticator`1' from assembly 'Google.Apis.Authentication.OAuth2, Version=1.4.0.28223, Culture=neutral, PublicKeyToken=null' does not have an implementation.

Here is part of the code that uses analytic

.............................................

                //This is the API url which we're storing to a string
                string scope = AnalyticsService.Scopes.AnalyticsReadonly.GetStringValue();

                //For whatever reason, this is labelled wrong. It is the email address
                //that you have added as a user to your Analytics account
                string clientId = "*********@developer.gserviceaccount.com";

                //This is the physical path to the file we downloaded earlier
                //To demonstrate this, I've kept the full path to my key file.
                //Obviously, you will need to change this to match where you've
                //stored yours.
                string keyFile = @"C:\key\*************76-privatekey.p12";

                //The password Google gives you, probably the same as the one below
                string keyPassword = "notasecret";

                //Store the authentication description
                AuthorizationServerDescription desc = GoogleAuthenticationServer.Description;

                //Create a certificate object to use when authenticating
                X509Certificate2 key = new X509Certificate2(keyFile, keyPassword, X509KeyStorageFlags.Exportable);

                //Now, we will log in and authenticate, passing in the description
                //and key from above, then setting the accountId and scope
                AssertionFlowClient client = new AssertionFlowClient(desc, key)
                {
                    ServiceAccountId = clientId,
                    Scope = scope
                };

                //Finally, complete the authentication process
                //NOTE: This is the first change from the update above
                OAuth2Authenticator<AssertionFlowClient> auth =
                    new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState);

                //First, create a new service object
                //NOTE: this is the second change from the update
                //above. Thanks to James for pointing this out
                AnalyticsService gas = new AnalyticsService(new BaseClientService.Initializer() { Authenticator = auth });

                //Create our query
                //The Data.Ga.Get needs the parameters:
                //Analytics account id, starting with ga:
                //Start date in format YYYY-MM-DD
                //End date in format YYYY-MM-DD
                //A string specifying the metrics

                DataResource.GaResource.GetRequest r =
                    gas.Data.Ga.Get(googleID[0]["google_analytic_id"].ToString(), "2005-01-01", DateTime.Now.ToString("yyyy-MM-dd"), "ga:visitors");

                //Specify some addition query parameters
                //    r.Dimensions = "ga:pagePath";
                r.Sort = "-ga:visitors";
                r.MaxResults = 5;

                //Execute and fetch the results of our query
                GaData d = r.Execute();

1条回答
可以哭但决不认输i
2楼-- · 2019-06-11 03:10

I have the same problem. Have no solution yet, but:

I testing google apis in an MVC project using .net framework 4.0, where I have added google apis with nugets. The project works fine in VS Express 2012 for web, but I got the same crash when I publish the project to an IIS7 server running .NET Framework Version:4.0.30319. I have verified that the two machines are using the same assemblies.

Something differs and I dont know what!

查看更多
登录 后发表回答