2016-11-15 41 views
0

嘗試創建KeyVaultClient時遇到問題。我使用示例代碼Azure KeyVaultClient Hyak.Common異常試圖獲取訪問令牌

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)); 
    } 

,當我嘗試創建我收到一個異常

型「System.TypeInitializationException」的異常出現在 Hyak.Common.dll但未處理的keyVaultClient用戶代碼

附加信息: 'Hyak.Common.ServiceClient`1的類型初始值設定項引發異常。

當我去異常細節,我可以看到

{「無法加載文件或程序集Microsoft.Threading.Tasks, 版本= 1.0.12.0,文化=中立,公鑰= b03f5f7f11d50a3a 。'或 它的一個依賴系統找不到指定的文件 「:」 Microsoft.Threading.Tasks,版本= 1.0.12.0, 文化=中性公鑰= 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"/> 

回答

0

也許你缺少Microsoft.Bcl.Async也許你可以展示你的package.config看到你所安裝的軟件包。 如果您缺少Microsoft.Bcl.Async,請使用軟件包管理器控制檯進行安裝: Install-Package Microsoft.Bcl.Async

+0

不幸的是,事實並非如此。我有Microsoft.Bcl.Async。 – t111

+0

請確保您是否可以在解決方案資源管理器的「參考」節點下看到對Microsoft.Threading.Tasks.dll的引用。請檢查Microsoft.Threading.Tasks.dll文件是否存在於項目包中的Microsoft.Bcl.Async.1.0.168 \ lib文件夾中。此外,請嘗試從您的項目中卸載軟件包,然後重新安裝Microsoft.Azure.KeyVault和Microsoft.IdentityModel.Clients.ActiveDirectory軟件包。 –