微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试通过 Azure 函数中的 Azure Management Fluent Api 创建 KeyVault 时出现 ArgumentNullException

如何解决尝试通过 Azure 函数中的 Azure Management Fluent Api 创建 KeyVault 时出现 ArgumentNullException

添加一个服务总线触发函数,以通过 Microsoft.Azure.Management.Fluent 库创建密钥保管库。

函数在本地运行良好,并在我的 MSDN 订阅中创建了一个新的密钥保管库,但是,当它部署到 Azure 并尝试使用函数应用托管服务标识在我们公司的测试订阅中创建密钥保管库时,它失败并显示 { {1}}来自ArgumentNullException

堆栈跟踪

Guid.Parse

运行以下语句时发生错误,该语句取自此再现链接ManageKeyVault sample project。提供的参数都具有有效值,并且通过 IAzure.ResourceGroups.GetByNameAsync(resourceGroupName) 查找了 resourceGroup。

Inner exception System.ArgumentNullException handled at CollectorFunctions.Proxies.keyvaultProxy+d__9.MoveNext:
at System.Guid.Parse (System.Private.CoreLib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e)
at Microsoft.Azure.Management.keyvault.Fluent.VaultsImpl.WrapModel (Microsoft.Azure.Management.keyvault.Fluent,Version=1.0.0.68,PublicKeyToken=31bf3856ad364e35)
at Microsoft.Azure.Management.keyvault.Fluent.VaultsImpl.Define (Microsoft.Azure.Management.keyvault.Fluent,PublicKeyToken=31bf3856ad364e35)
at Microsoft.Azure.Management.keyvault.Fluent.VaultsImpl.Microsoft.Azure.Management.ResourceManager.Fluent.Core.CollectionActions.ISupportsCreating<Microsoft.Azure.Management.keyvault.Fluent.Vault.DeFinition.IBlank>.Define (Microsoft.Azure.Management.keyvault.Fluent,PublicKeyToken=31bf3856ad364e35)
at CollectorFunctions.Proxies.keyvaultProxy+d__9.MoveNext (CollectorFunctions,Version=1.0.0.0,PublicKeyToken=nullCollectorFunctions,PublicKeyToken=null: D:\a\1\s\src\Server\CollectorFunctions\Proxies\IkeyvaultProxy.csCollectorFunctions,PublicKeyToken=null: 86)

解决方法

就我而言,我在获取凭据时没有意识到有一个tenantId 参数。我需要提供tenantId:

var msi = new MSILoginInformation(MSIResourceType.VirtualMachine);
var creds = SdkContext.AzureCredentialsFactory.FromMSI(msi,AzureEnvironment.AzureGlobalCloud,*** tenantId ***);

由于您的堆栈跟踪与我的完全一样,我猜这就是问题所在。如果您在获得凭据时指定了租户 ID,那么我认为它应该适合您。要获取 TenantId,请转到您的标识所在的 Azure AD,它应列在概述页面上。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。