Я использую тот же код с вашим, и он не показывает сообщение об ошибке (как на локальном, так и на azure портале). Я редактирую его в Visual Studio, код, показанный ниже:
namespace FunctionApp7
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
var serviceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
// Getting the certificate
var secret = keyVaultClient.GetSecretAsync("https://***.vault.azure.net/", "***");
var certificate = new X509Certificate2(Convert.FromBase64String(secret.Result.Value));
log.LogInformation(certificate.ToString());
return new OkObjectResult("success");
}
}
}
Он отлично работает в Visual Studio, а также отлично работает при развертывании из Visual Studio на портале azure.
Вот сообщение , в котором упоминается решение, которое вы также можете попробовать. В сообщении сообщается нам
Если вы включите этот код в основной проект ASP. NET и запустите его локально, он будет работать, как и ожидалось. Но если вы развернете его в Azure (как веб-приложение или Azure функция), вы получите следующее исключение: The system cannot find the file specified
Решение:
var certificate = new X509Certificate2(Convert.FromBase64String(secret.Value),
(string)null,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
Надеюсь, это поможет ~