예제 #1
0
        public static void Main(string[] args)
        {
            try
            {
                EnvironmentConfig.Initialize();

                TelemetryConfiguration telemetryConfig = new TelemetryConfiguration(
                    EnvironmentConfig.Singleton.AppInsightsInstrumentationKey);
                TelemetryHelper.Initilize(telemetryConfig, SourceName);
            }
            catch (Exception error)
            {
                Console.WriteLine(
                    "UNHANDLED EXCEPTION during initialization before TelemetryClient oculd be created: {0}",
                    error);

                throw;
            }

            try
            {
                _ = EnvironmentConfig.Singleton.TenantId;
                _ = EnvironmentConfig.Singleton.AllowedUsers;

                KeyVaultHelper.Initialize(new Uri(EnvironmentConfig.Singleton.KeyVaultUri), new DefaultAzureCredential());

                using (CosmosClient client =
                           KeyVaultHelper.Singleton.CreateCosmosClientFromKeyVault(
                               EnvironmentConfig.Singleton.MigrationMetadataCosmosAccountName,
                               WebAppUserAgentPrefix,
                               useBulk: false,
                               retryOn429Forever: true))
                {
                    MigrationConfigDal.Initialize(
                        client.GetContainer(
                            EnvironmentConfig.Singleton.MigrationMetadataDatabaseName,
                            EnvironmentConfig.Singleton.MigrationMetadataContainerName),
                        EnvironmentConfig.Singleton.DefaultSourceAccount,
                        EnvironmentConfig.Singleton.DefaultDestinationAccount);

                    CreateHostBuilder(args).Build().Run();
                }
            }
            catch (Exception unhandledException)
            {
                TelemetryHelper.Singleton.LogError(
                    "UNHANDLED EXCEPTION: {0}",
                    unhandledException);

                throw;
            }
        }
        public static void Initialize(
            Container migrationStatusContainer,
            string defaultSourceAccount,
            string defaultDestinationAccount)
        {
            if (migrationStatusContainer == null)
            {
                throw new ArgumentNullException(nameof(migrationStatusContainer));
            }

            singletonInstance = new MigrationConfigDal(
                migrationStatusContainer,
                defaultSourceAccount,
                defaultDestinationAccount);
        }