Когда я пытаюсь вызвать любой API Azure KeyVault из командлета PS, мой сеанс отладки VS прерывается. Как я могу отладить это? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть командлет PS в C # - его функция ProcessRecord выглядит следующим образом:

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

var cert = await keyClient.GetCertificateAsync(keyVaultCertUri);

Моя проблема в том, что когда я вызываю любой API-интерфейс KeyVaultClient из моего командлета, VS просто завершает сеанс отладки.Там нет полезного вывода в окне отладки;исключение не выбрасывается;нада.Сеанс отладки внезапно заканчивается.

Как мне отладить происходящее, чтобы успешно выполнить этот вызов?

1 Ответ

0 голосов
/ 19 апреля 2019

Проблема в том, что при наследовании от Cmdlet ProcessRecord не может быть асинхронным. Если вы выполняете ожидание непосредственно в ProcessRecord, оно немедленно прекратит обработку. Таким образом, любые асинхронные вызовы должны выполняться синхронно в ProcessRecord для выполнения функции.

Что касается отладки, я не нашел в VS доказательств того, что проблема была в ожидании. На странице PowerShell Git коллега обнаружил открытую проблему, описывающую эту проблему.

...