【问题标题】:Azure KeyVaultClient Hyak.Common exception whilte trying to get access token尝试获取访问令牌时 Azure KeyVaultClient Hyak.Common 异常
【发布时间】:2016-11-15 07:26:40
【问题描述】:

我在尝试创建 KeyVaultClient 时遇到问题。我使用示例代码

    async Task<string> GetAccessToken(string authority, string resource, string scope)
    {
        var clientId = "ID";
        var clientSecret = "SECRET";
        ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);

        var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
        var result = await context.AcquireTokenAsync(resource, clientCredential);

        return result.AccessToken;
    }

    public async void Test()
    {
        var vaultAddress = "url";
        KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken));
    }

当我尝试创建 keyVaultClient 时收到异常

“System.TypeInitializationException”类型的异常发生在 Hyak.Common.dll 但未在用户代码中处理

附加信息:类型初始化器 'Hyak.Common.ServiceClient`1' 抛出异常。

当我转到异常详细信息时,我可以看到

{"无法加载文件或程序集 'Microsoft.Threading.Tasks, 版本=1.0.12.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。系统找不到文件 指定。":"Microsoft.Threading.Tasks,版本=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}

我的packages.config:

 <package id="Hyak.Common" version="1.1.0" targetFramework="net46" />  
 <package id="Microsoft.Azure.Common" version="2.0.4"      targetFramework="net46" />
 <package id="Microsoft.Azure.Common.Dependencies" version="1.0.0"      targetFramework="net46" />
 <package id="Microsoft.Azure.KeyVault" version="1.0.0" targetFramework="net46" />
 <package id="Microsoft.Azure.SqlDatabase.ElasticScale.Client" version="1.3.2" targetFramework="net46" />
 <package id="Microsoft.Bcl" version="1.1.10" targetFramework="net46" />
 <package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net46" />   
 <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net46" />
 <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="3.13.7" targetFramework="net46" />
 <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="net46" userInstalled="true" />
 <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46"/>

【问题讨论】:

    标签: c# .net azure


    【解决方案1】:

    也许你错过了Microsoft.Bcl.Async也许你可以显示你的 package.config 来查看你安装了哪个包。 如果您缺少Microsoft.Bcl.Async,那么只需使用包管理器控制台安装它: Install-Package Microsoft.Bcl.Async

    【讨论】:

    • 不幸的是,事实并非如此。我有 Microsoft.Bcl.Async。
    • 请确保您是否可以在解决方案资源管理器的“引用”节点下看到对 Microsoft.Threading.Tasks.dll 的引用。请检查您的项目包中的 Microsoft.Bcl.Async.1.0.168\lib 文件夹中是否存在 Microsoft.Threading.Tasks.dll 文件。此外,请尝试从您的项目中卸载包并重新安装 Microsoft.Azure.KeyVault 和 Microsoft.IdentityModel.Clients.ActiveDirectory 包。
    【解决方案2】:

    就我而言,我缺少对 Microsoft.Threading.Tasks.dllMicrosoft.Bcl.Async nuget 包的引用。

    【讨论】:

      猜你喜欢
      • 2023-02-01
      • 1970-01-01
      • 2018-06-04
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多