Azure KeyVault:使用GetSecretAsync时的异常

时间:2018-07-26 18:27:44

标签: azure-keyvault

在开发模式下,我在本地计算机VS2017 15.7.5上使用

  • Asp.Net MVC Core 2.1
  • Azure KeyVault 3.0.0
  • AppAuthentication 1.1.0-预览版

我建立了一个单独的项目,该项目用于从Vault中获取机密,添加日志记录和其他内容。我从我的MVC项目中引用了该项目。

启动网站后,我得到:

Exception thrown: 'System.IO.FileLoadException' in Microsoft.AspNetCore.Hosting.dll

我无法追踪。

{编辑:我发现了这一点,它是CSPROJ中的错误参考。其他所有内容都保持不变。}

我这样实例化一个AzureServiceTokenProvider

_provider = new AzureServiceTokenProvider();
_client = new KeyVaultClient(new KeyVaultClient
                 .AuthenticationCallback(_provider.KeyVaultTokenCallback));

然后我像这样使用它:

try
    {
        var secretBundle = await _client
           .GetSecretAsync(_config[$"{SecretUrlsKey}:{secretName}"])
           .ConfigureAwait(false);

        Debug.WriteLine("Secret retrieved from vault ...");

        _secretCache.Add(secretName, secretBundle.Value);
        return secretBundle?.Value;
     }
catch (Exception e)
...

然后,我收到一连串的错误(没有一个错误返回到我的代码中)。像这样:

Exception thrown: 'Microsoft.Rest.TransientFaultHandling.HttpRequestWithStatusException' in Microsoft.Rest.ClientRuntime.dll
Exception thrown: 'Microsoft.Rest.TransientFaultHandling.HttpRequestWithStatusException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Sockets.SocketException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Net.Http.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Net.Http.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Net.Http.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in System.Private.CoreLib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in Microsoft.Azure.Services.AppAuthentication.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in System.Private.CoreLib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in System.Private.CoreLib.dll

最终,我得到了我想要的价值,但这似乎有点不可思议。

FWIW,我将其部署到Azure的成功率为零。

有人对此有任何想法吗?

TIA

1 个答案:

答案 0 :(得分:0)

关于第二个问题,这是在两台不同的机器上发生的。没有真正的科学分析(没有时间),我的直觉是,允许您在安装时运行VS的dotnet核心更新导致了问题。

最后,我使用了Visual Studio Installer修复选项,问题消失了。某些东西一定已损坏。

别忘了备份您的扩展程序和设置,因为修复会破坏所有这些。

清除和重新安装Nuget程序包无济于事。