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;
}