方法InterceptAsync in Google.Apis.Auth.OAuth2.ServiceAccountCredential类型没有实现

时间:2014-01-31 21:24:17

标签: c# api google-analytics

我在标题中放置了错误消息,因为我对网络进行了评分,但找不到其他任何有此问题的实例。

我正在尝试使用google .net api访问分析数据,如下所示:http://www.toplinestrategies.com/dotneters/net/accessing-and-querying-google-analytics-via-service-account-c/?lang=en

我已经按照所有内容创建了凭据,指向了密钥文件和密码,并使用电子邮件地址作为客户端ID。

但奇怪的是,当我执行页面时,它立即失败并且标题中出现错误。

有问题的代码行似乎是这一行:

    var credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(clientId)
       {
           Scopes = new[] { scope }
       }.FromCertificate(certificate));

如果我删除该行,页面不会导致异常,但如果我添加它,它会立即失败。

但它完全跳过该页面上的任何断点,所以我甚至无法查看错误的内容或位置,就好像它在页面加载之前执行一样。

我怀疑这是不好的凭据,但如果我运行小提琴手,我发现没有流量传递到谷歌或任何地方,它只是立即失败。

这是非常令人沮丧的,有没有人见过这个?什么想法可能是错的?真正让我感到愤怒的部分是,如果我在页面的任何地方设置断点,即使在失败的代码之前,它也没有命中,但是立即失败,跳过我的所有断点,怎么会这样?

密钥的路径是正确的,密码是正确的,电子邮件客户端ID是正确的我三重检查它,这也不是问题,因为它甚至从未尝试联系谷歌。

我想也许这是对密钥的读/文权限,但我完全访问了文件中的每个人,并且X509Certificate2正确加载...

那么其他什么可能在这里错了?

感谢

1 个答案:

答案 0 :(得分:2)

事实证明,令人讨厌的代码行是web.config中的这一行:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>

bin文件夹中的System.Net.Http版本实际上是2.1.10。不知道为什么这不会导致整个网站崩溃而不是一个随机组件,但删除它完全解决了问题