public override async Task RunAsync()

in src/Cli/func/Actions/HostActions/StartHostAction.cs [401:465]


        public override async Task RunAsync()
        {
            await PreRunConditions();
            var isVerbose = VerboseLogging.HasValue && VerboseLogging.Value;

            // Return if running is delegated to another version of Core Tools
            if (await TryHandleInProcDotNetLaunchAsync())
            {
                return;
            }

            if (isVerbose || EnvironmentHelper.GetEnvironmentVariableAsBool(Constants.DisplayLogo))
            {
                Utilities.PrintLogo();
            }

            // Suppress AspNetCoreSupressStatusMessages
            EnvironmentHelper.SetEnvironmentVariableAsBoolIfNotExists(Constants.AspNetCoreSupressStatusMessages);

            // Suppress startup logs coming from grpc server startup
            Environment.SetEnvironmentVariable("Logging__LogLevel__Microsoft.Hosting.Lifetime", "None");

            Utilities.PrintVersion();

            ScriptApplicationHostOptions hostOptions = SelfHostWebHostSettingsFactory.Create(Environment.CurrentDirectory);

            ValidateAndBuildHostJsonConfigurationIfFileExists(hostOptions);

            if (File.Exists(Path.Combine(Environment.CurrentDirectory, Constants.ProxiesJsonFileName)))
            {
                ColoredConsole.WriteLine(WarningColor(Constants.Errors.ProxiesNotSupported));
            }

            (var listenUri, var baseUri, var certificate) = await Setup();

            await ExtensionBundleHelper.GetExtensionBundle();
            IWebHost host = await BuildWebHost(hostOptions, listenUri, baseUri, certificate);
            var runTask = host.RunAsync();
            var hostService = host.Services.GetRequiredService<WebJobsScriptHostService>();

            await hostService.DelayUntilHostReady();

            var scriptHost = hostService.Services.GetRequiredService<IScriptJobHost>();
            var httpOptions = hostService.Services.GetRequiredService<IOptions<HttpOptions>>();
            if (scriptHost != null && scriptHost.Functions.Any())
            {
                // Checking if in Limelight - it should have a `AzureDevSessionsRemoteHostName` value in local.settings.json.
                var forwardedHttpUrl = _secretsManager.GetSecrets().FirstOrDefault(
                    s => s.Key.Equals(Constants.AzureDevSessionsRemoteHostName, StringComparison.OrdinalIgnoreCase)).Value;
                if (forwardedHttpUrl != null)
                {
                    var baseUrl = forwardedHttpUrl.Replace(Constants.AzureDevSessionsPortSuffixPlaceholder, Port.ToString(), StringComparison.OrdinalIgnoreCase);
                    baseUri = new Uri(baseUrl);
                }

                DisplayFunctionsInfoUtilities.DisplayFunctionsInfo(scriptHost.Functions, httpOptions.Value, baseUri);
            }

            if (VerboseLogging == null || !VerboseLogging.Value)
            {
                ColoredConsole.WriteLine(AdditionalInfoColor("For detailed output, run func with --verbose flag."));
            }

            await runTask;
        }