У меня был какой-то код, который я попробовал в HomeController, и он работал нормально, но как только я перехожу в библиотеку классов, он действует так.
Я попытался iisreset и удалить виртуальное репо и воссоздал его. Но не повезло
Я попытался прокомментировать часть кода и похоже, что строки 3 и 4, возможно, вызывают проблему
private static readonly string vaultAddress = WebConfigurationManager.AppSettings["VaultUrl"];
private static KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessTokenAsync));
private static readonly string UserName = keyVaultClient.GetSecretAsync(vaultAddress, "ADUsername", ConfigurationManager.AppSettings["ADUsernameVersion"]).GetAwaiter().GetResult().Value;
private static readonly string Password = keyVaultClient.GetSecretAsync(vaultAddress, "ADPassword", ConfigurationManager.AppSettings["ADPasswordVersion"]).GetAwaiter().GetResult().Value;
public static async Task<string> GetAccessTokenAsync(string authority, string resource, string scope)
{
var clientId = WebConfigurationManager.AppSettings["ClientId"];
var clientSecret = WebConfigurationManager.AppSettings["ClientSecret"];
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, clientCredential);
return result.AccessToken;
}
Сообщение об ошибке: «Не удалось запустить отладку на веб-сервере. Время операции истекло»
Это то, что работает в HomeController
public ActionResult Index()
{
var vaultAddress = WebConfigurationManager.AppSettings["VaultUrl"];
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken));
var username = keyVaultClient.GetSecretAsync(vaultAddress, "ADUsername", ConfigurationManager.AppSettings["ADUsernameVersion"]).GetAwaiter().GetResult().Value;
var password = keyVaultClient.GetSecretAsync(vaultAddress, "ADPassword", ConfigurationManager.AppSettings["ADPasswordVersion"]).GetAwaiter().GetResult().Value;
Init();
return View();
}
public static async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var clientId = WebConfigurationManager.AppSettings["ClientId"];
var clientSecret = WebConfigurationManager.AppSettings["ClientSecret"];
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, clientCredential);
return result.AccessToken;
}