当我尝试从PS cmdlet调用任何Azure KeyVault API时,我的VS调试会话将中止。我该怎么调试呢?

问题描述 投票:0回答:1

我在C#中有一个PS Cmdlet - 它的ProcessRecord函数如下所示:

var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyClient = new KeyVaultClient(
    new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

var cert = await keyClient.GetCertificateAsync(keyVaultCertUri);

我的问题是当我从我的Cmdlet中调用任何KeyVaultClient API时,VS只是结束调试会话。 “调试”窗口中没有有用的输出;没有例外;缥缈。调试会话突然结束。

如何调试正在进行的操作以便成功进行此调用?

c# powershell async-await azure-keyvault cmdlet
1个回答
0
投票

问题是,当从Cmdlet继承时,ProcessRecord不能是异步的。如果直接在ProcessRecord中执行await,它将立即结束处理。因此,必须在ProcessRecord中使任何异步调用同步才能执行。

在调试方面,我发现VS中没有证据表明存在问题。一位同事在PowerShell Git页面上发现了一个描述此问题行为的未解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.