Мы настраиваем хранилище ключей Azure для использования с всегда зашифрованными столбцами в SQL. Я получил все настройки кода и миграции CF, update-database, отлично работают на моем локальном компьютере, но когда я регистрируюсь и развертываю TFS, он терпит неудачу, заявляя, что у него есть проблемы с System.Net.Http. Я попробовал каждое предложение в Интернете, но не могу заставить его работать в TFS даром. Любая помощь будет принята с благодарностью. Журналы и начальный код ниже.
Журналы TFS
2018-11-04T23: 30: 56.1072858Z ## [раздел] Запуск: обновление БД с использованием CF
2018-11-04T23: 30: 56.1075915Z ==================================== =========================================
2018-11-04T23: 30: 56.1076031Z Задача: Командная строка
2018-11-04T23: 30: 56.1076134Z Описание: Запустите сценарий командной строки, используя cmd.exe в Windows и bash в macOS и Linux.
2018-11-04T23: 30: 56.1076245Z Версия: 2.142.1
2018-11-04T23: 30: 56.1076334Z Автор: Microsoft Corporation
2018-11-04T23: 30: 56.1076433Z Справка: Дополнительная информация
2018-11-04T23: 30: 56.1076553Z ==================================== =========================================
2018-11-04T23: 30: 57.2703277Z Создание сценария.
2018-11-04T23: 30: 57.2720721Z Содержание сценария:
2018-11-04T23: 30: 57.3000149Z migrate.exe "Data.dll" / ConnectionString: "источник данных = XXX.XXX.XXX.XXX; исходный каталог = Dev; встроенная безопасность = False; идентификатор пользователя = ID ; Пароль = XXXX; Настройка шифрования столбца = включена "
/connectionProviderName:"System.Data.SqlClient "/ verbose /startupConfigurationFile="..\..\..\Website\web.config"
2018-11-04T23: 30: 57.3444734Z ## [команда] "C: \ Windows \ system32 \ cmd.exe" / D / E: ВКЛ / V: ВЫКЛ / S / C "ВЫЗОВ" C: \ agent_work_temp \ eb1b5f18-6061-405e-b5af-4648a8112358.cmd ""
2018-11-04T23: 31: 01.6622161Z VERBOSE: Целевая база данных: «Dev» (источник данных: XXX.XXX.XXX.XXX, поставщик: System.Data.SqlClient, происхождение: явное).
2018-11-04T23: 31: 03.2434372Z Нет ожидающих явных миграций.
2018-11-04T23: 31: 03.3614105Z Метод бегущего семени.
2018-11-04T23: 31: 03.7846850Z System.Data.Entity.Migrations.Design.ToolingException: не удалось загрузить файл или сборку 'System.Net.Http, версия = 4.2.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из его зависимостей.
Система не может найти указанный файл.
2018-11-04T23: 31: 03.7847574Z в System.Data.Entity.Migrations.Design.ToolingFacade.Run (бегун BaseRunner)
2018-11-04T23: 31: 03.7847797Z в System.Data.Entity.Migrations.Console.Program.Run ()
2018-11-04T23: 31: 03.7847985Z в System.Data.Entity.Migrations.Console.Program.Main (String [] args)
2018-11-04T23: 31: 03.7848435Z ОШИБКА: не удалось загрузить файл или сборку 'System.Net.Http, версия = 4.2.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостей. Система не может найти указанный файл.
2018-11-04T23: 31: 03.9076355Z ## [error] Cmd.exe завершен с кодом «1».
2018-11-04T23: 31: 03.9591665Z ## [раздел] Окончание: обновление БД с использованием CF
Код в методе семени:
_clientCredential = new ClientCredential(applicationId, clientKey);
SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider =
new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);
Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers =
new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>();
providers.Add (SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider);
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
public async static Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext(authority);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, _clientCredential);
if (result == null)
throw new InvalidOperationException("Failed to obtain the access token");
return result.AccessToken;
}